gpt4 book ai didi

c# - 实现通用接口(interface)和非通用接口(interface)

转载 作者:行者123 更新时间:2023-11-30 13:22:06 27 4
gpt4 key购买 nike

我有两个契约(Contract)(一个通用接口(interface)和另一个非通用接口(interface))如下:

public interface IGenericContract<T>  where T : class
{
IQueryable<T> GetAll();
}

public interface INonGenericContract
{
string GetFullName(Guid guid);
}

我有一个实现两者的类

public class MyClass<T> :
IGenericContract<T> where T : class, INonGenericContract
{
public IQueryable<T> GetAll()
{
...
}

public string GetFullName(Guid guid)
{
...
}
}

在我编译它之前一切都很好。但是现在当我尝试使用这个类时,我遇到了这个错误“错误 CS0311:类型‘字符串’不能用作泛型类型或方法‘ConsoleApplication1.MyClass’中的类型参数‘T’。没有从‘字符串’到‘ConsoleApplication1.INonGenericContract’的隐式引用转换。”

class Program
{
static void Main(string[] args)
{
MyClass<string> myClass = new MyClass<string>(); //Error
}
}

如果我不实现非通用契约(Contract),它就可以正常工作。这里可能有什么问题?

谢谢

最佳答案

在您的代码中,INonGenericContract 是通用约束的一部分,因为它位于 where 之后。

public class MyClass<T> :
IGenericContract<T> where T : class, INonGenericContract

您可能想要:

public class MyClass<T> :
IGenericContract<T>, INonGenericContract where T : class

关于c# - 实现通用接口(interface)和非通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30448120/

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