我有一个C#viewmodel,我在构造函数中传递一个泛型类型:
ViewModel
在我的public IIncrementalLoadingHelper<BaseDTO> IncrementalLoadingHelper {get; set;}
基类中,我有以下属性:
MessageDTO
BaseDTO
继承自IncrementalLoadingHelper = incrementalLoadingHelper
。
在设置IIncrementalLoadingHelper<MessageDTO>
的行上,我收到错误:
无法将
IIncrementalLoadingHelper<BaseDTO>
类型隐式转换为this.state
。存在显式转换(您是否错过了演员?)
我可能错过了演员表,但我不知道怎么做。有人能指出我正确的方向吗?
答案 0 :(得分:0)
您实际需要的只是通用类型的generic out
modifier:
class BaseDTO { }
class MessageDTO : BaseDTO { }
interface IIncrementalLoadingHelper<out T> { }
class ViewModelTestPage
{
IIncrementalLoadingHelper<BaseDTO> IncrementalLoadingHelper { get; }
public ViewModelTestPage(IIncrementalLoadingHelper<MessageDTO> incrementalLoadingHelper)
{
IncrementalLoadingHelper = incrementalLoadingHelper;
}
}
那就是说,对我来说,属性是基类型没有多大意义,但构造函数采用派生类型。为什么不直接使用派生类型作为属性类型?