對於初學者來說,這個問題是不是這後,本人已閱讀100次的重複(請閱讀的問題):在運行時動態How to determine if a type implements an interface with C# reflection如何確定動態如果類型是使用反射的接口?
我使用反射性能,通過對對象的迭代操縱和添加數據。對我來說,根本問題是自然,你無法實例的使用Activator.CreateInstance
後下遊不得將針對發現的Interface
或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>
和List<Address>
有上述回覆true
。這是因爲即使我們所知的List<T>
實際上實現了一批接口(即IList
,ICollection
,IEnumerable
等)。
因爲我動態做這個調查,我不知道該怎樣來測試,如果我喜歡的類型實現了特定Interface
像所有的例子表明,如我貼在裏面做下面開始鏈接的想法:
typeof(IMyInterface).IsAssignableFrom(typeof(MyType))
typeof(MyType).GetInterfaces().Contains(typeof(IMyInterface))
我需要幫助確定所述對象屬性反映在動態和在焦點,是直接接口,而不是一個濃rete type?所有的例子都需要測試已知的Interface
到一個已知的具體類型,但由於這是動態發生的,我不知道如何完成這個?
['Type.IsInterface'財產(https://msdn.microsoft.com/en-us/library/system.type.isinterface%28v=vs.110 %29.aspx)? –
您是否閱讀過文檔? – SLaks
@SLaks - 感謝您的高質量幫助。這無疑幫助我解決了這個問題。 – atconway