【发布时间】:2018-04-14 01:26:55
【问题描述】:
我有一个带有两个构造函数的 Response 类。一个接收一个 Result 对象,另一个接收一个通用 Result 对象。
如何声明Response类的泛型构造函数来获取泛型对象?
在此示例代码中,使用了非泛型构造函数。
var result = new Result<SomeModel>();
var response = new Response(result); // should use the generic constructor but uses the normal
public interface IModel
{
}
public class SomeModel : IModel
{
public string Text { get; set; }
}
public class Result<T> : Result where T : class, IModel
{
public T Model { get; set; }
}
public class Result
{
public bool Success { get; set; }
}
public class Response
{
public Response(Result<IModel> data)
{
}
public Response(Result data)
{
}
}
【问题讨论】:
-
试试这个,看看为什么它不能编译的消息:
new Response((Result<IModel>)result)——这是一个(co|contra)方差的东西。Result<SomeModel>不是Result<IModel>。
标签: c# generics constructor