gpt4 book ai didi

c# - 返回接口(interface)的通用方法

转载 作者:行者123 更新时间:2023-11-30 19:52:19 24 4
gpt4 key购买 nike

我想编写一个返回 DAL 接口(interface)的通用方法,但它不起作用。

可以这样做:

public MyInterface GetDAL()
{
return new DAL(); // DAL implements MyInterface
}

但不是这个:

public TInt GetDAL<TInt, TDAL>()
{
return new TDAL();
}

或者这个

public TInt GetDAL<TInt, TDAL>()
{
return (TInt)new TDAL();
}

我知道我可以返回具体类而不是接口(interface),但我不明白为什么它不起作用,如果 TDAL 实现了 TInt。

我有 10 个 DAL 类,我不想写 10 个方法。

谢谢你的帮助

最佳答案

如果你告诉编译器 constraints 它确实有效对于 TDAL:

public TInt GetDAL<TInt, TDAL>() where TDAL : TInt, new()
{
return new TDAL();
}

这告诉编译器 TDAL 必须实现 TInt 并且有一个无参数的构造函数。
所以现在编译器知道对于 TDAL 的任何类型参数,表达式 new TDAL() 都将起作用,并且结果可分配给 TInt

关于c# - 返回接口(interface)的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59181056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com