以下是我的代码,其中包含不重要的部分:
public class Response<T>
{
//...
}
public class Summary
{
//...
}
public class Db : IDb
{
public Response<Summary> Generate()
{
//...
return new Response<Summary>
{
//...
};
}
public Response<Summary> Execute<Summary>()
{
return Generate();
}
}
我收到一条错误消息:
Cannot implicitly convert type Response<Service.Models.Summary> to Response<Summary>.
我使用泛型错了吗?基本上,我期望在调用方法Generate()时看到Response模型,在这个实例中T是Summary类。
我实施的界面是:
public interface IDb
{
Response<T> Execute<T>();
}
答案 0 :(得分:3)
您的方法public Response<Summary> Execute<Summary>()
的通用参数Summary
覆盖了Summary
的类定义。 Response<Summary>
中Execute<Summary>()
的返回类型与Generate()
中的返回类型不同。
您的代码似乎应该是:
public Response<Summary> Generate()
{
//...
return new Response<Summary>
{
//...
};
}
public Response<Summary> Execute()
{
return Generate();
}
如果添加了您的界面IDb
,则上述答案无效。
您必须将Execute
实施为public Response<T> Execute<T>()
,这意味着返回类型Response<T>
与的Response<Summary>
相同编译时即可。所以错误是正确的。
你现在基本上有设计缺陷。
您可能需要进行此更改:
public class Db : IDb<Summary>
{
public Response<Summary> Generate()
{
//...
return new Response<Summary>
{
//...
};
}
public Response<Summary> Execute()
{
return Generate();
}
}
public interface IDb<T>
{
Response<T> Execute();
}