[英]C# Generics Casting. Casting from Base Class
我有一个C#viewmodel,我在构造函数中传递一个泛型类型:
public ViewModelTestPage(IIncrementalLoadingHelper<MessageDTO> incrementalLoadingHelper)
{
IncrementalLoadingHelper = incrementalLoadingHelper;
}
在我的ViewModel
基类中,我有以下属性:
public IIncrementalLoadingHelper<BaseDTO> IncrementalLoadingHelper {get; set;}
MessageDTO
继承自BaseDTO
。
在设置IncrementalLoadingHelper = incrementalLoadingHelper
的行上,我收到一个错误:
无法将
IIncrementalLoadingHelper<MessageDTO>
类型隐式转换为IIncrementalLoadingHelper<BaseDTO>
。 存在显式转换(您是否错过了演员?)
我可能错过了演员表,但我不知道怎么做。 有人能指出我正确的方向吗?
您实际需要的只是泛型类型的通用out
修饰符 :
class BaseDTO { }
class MessageDTO : BaseDTO { }
interface IIncrementalLoadingHelper<out T> { }
class ViewModelTestPage
{
IIncrementalLoadingHelper<BaseDTO> IncrementalLoadingHelper { get; }
public ViewModelTestPage(IIncrementalLoadingHelper<MessageDTO> incrementalLoadingHelper)
{
IncrementalLoadingHelper = incrementalLoadingHelper;
}
}
也就是说,对我来说,属性是基类型没有多大意义,但构造函数采用派生类型。 为什么不直接使用派生类型作为属性类型呢?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.