簡體   English   中英

返回特定接口的類型?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM