[英]Return a Type of a specific interface?
假設有一個IView
接口,其中存在多個實現。
現在,還有其他多個具有以下屬性的類:
public Type ViewType { get; }
我想確保返回的Type是IView
類型。
有什么辦法可以做到這一點? (例如where returnvalue: IView
)
請注意,屬性不返回的實例IView
。
如果是這樣,將有這種方式:
public T GetView<T>() where T: IView { }
另一種方法是在調用該屬性的任何位置檢查返回的類型-但這需要很多代碼才能進行相同的檢查。
您的兩種解決方案立即浮現在腦海。
也許您可以通過添加一個輔助方法來減輕檢查返回類型的重復:
public bool ViewImplementsIView()
{
return typeof(this.ViewType).GetInterfaces().Contains(typeof(IView));
}
它將測試封裝到您的類中,因此您減少了其他地方所需的驗證量-潛在地,如果此方法返回false,甚至可能在getter上引發異常。
以這種方式嘗試
bool ImplementsIView(object t)
{
return typeof(IView).IsAssignableFrom(typeof(t.GetType()));
}
更新
bool ImplementsIView(Type t)
{
return typeof(IView).IsAssignableFrom(typeof(t));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.