[英]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.