簡體   English   中英

如何動態確定類型是否是使用反射的接口?

[英]How to determine dynamically if type is an Interface using reflection?

對於初學者,此問題不是我已閱讀100次(請繼續提問)的重復: 如何確定類型是否使用C#反射實現接口

我正在使用反射在運行時動態地遍歷對象的屬性以操縱和添加數據。 對我來說,根本問題是自然,你不能實例的實例Interface ,因此使用我的代碼Activator.CreateInstance后下游不得對發現的各類跑出Interface或集合Interface類型。

假設我在Person類中具有以下內容:

public IList<Address> addresses1 {get ; set; } \\\\ This property **should** flag being an Interface public List<Address> addresses2 {get ; set; } \\\\ This property **should NOT** flag being an Interface

在思考屬性時使用以下代碼,我可以確定該屬性是否實現了Interface

propertyTypeFromReflection.GetInterfaces().Any()

IList<Address>的問題是IList<Address>List<Address>都有上面的語句返回true 這是因為,即使我們知道的List<T>實際上也實現了許多接口(即IListICollectionIEnumerable等)。

由於我是動態進行調查的,所以我不知道如何測試我的類型是否實現了特定的 Interface所有示例所示,例如我一開始發布的鏈接,它執行以下操作:

typeof(IMyInterface).IsAssignableFrom(typeof(MyType)) typeof(MyType).GetInterfaces().Contains(typeof(IMyInterface))

我需要幫助確定對象屬性Property是否動態且重點突出,是否直接是Interface而不是具體類型? 所有示例都需要測試已知Interface到已知具體類型的代碼,但是由於這是動態發生的,所以我不知道該如何完成?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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