2015-05-26 41 views
1

對於初學者來說,這個問題是不是後,本人已閱讀100次的重複(請閱讀的問題):在運行時動態How to determine if a type implements an interface with C# reflection如何確定動態如果類型是使用反射的接口?

我使用反射性能,通過對對象的迭代操縱和添加數據。對我來說,根本問題是自然,你無法實例的使用Activator.CreateInstance後下遊不得將針對發現的InterfaceInterface類型的集合類型跑了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,ICollectionIEnumerable等)。

因爲我動態做這個調查,我不知道該怎樣來測試,如果我喜歡的類型實現了特定Interface所有的例子表明,如我貼在裏面做下面開始鏈接的想法:

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

我需要幫助確定所述對象屬性反映在動態和在焦點,是直接接口,而不是一個濃rete type?所有的例子都需要測試已知的Interface到一個已知的具體類型,但由於這是動態發生的,我不知道如何完成這個?

+4

['Type.IsInterface'財產(https://msdn.microsoft.com/en-us/library/system.type.isinterface%28v=vs.110 %29.aspx)? –

+2

您是否閱讀過文檔? – SLaks

+1

@SLaks - 感謝您的高質量幫助。這無疑幫助我解決了這個問題。 – atconway

回答

相關問題