24
A
回答
42
沒有,is
只能用於檢查對象的類型,而不是一個給定Type
。你想要Type.IsAssignableFrom
:
if (attr != null && typeof(IInterface).IsAssignableFrom(type))
請注意這裏的順序。我發現我差不多總是使用typeof(...)
作爲目標的調用。基本上,要使其返回true,目標必須是「父」類型,參數必須是「子」類型。
7
退房IsAssignableFrom http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx
2
嗨 您可以使用type.GetInterfaces() or type.GetInterface()
來獲取類型實現的接口。
-1
意識到這是非常晚的,但離開這裏以供參考: 我發現是運營商做的工作 - 從MSDN - http://msdn.microsoft.com/en-us/library/scekt9xw(v=vs.71).aspx
喬恩長柄水杓答案使用ReSharper的,給了我「是」作爲建議以及。
0
給定最壞的情況;
如果您使用了在類的所有屬性反射...
public List<PropertyInfo> FindProperties(Type TargetType) {
MemberInfo[] _FoundProperties = TargetType.FindMembers(MemberTypes.Property,
BindingFlags.Instance | BindingFlags.Public, new
MemberFilter(MemberFilterReturnTrue), TargetType);
List<PropertyInfo> _MatchingProperties = new List<PropertyInfo>();
foreach (MemberInfo _FoundMember in _FoundProperties) {
_MatchingProperties.Add((PropertyInfo)_FoundMember); }
return _MatchingProperties;
}
IInterface是一些通用接口
public void doSomthingToAllPropertiesInDerivedClassThatImplementIInterface() { IList<PropertyInfo> _Properties = FindProperties(this.GetType()); foreach (PropertyInfo _Property in _Properties) { if (_Property.PropertyType.GetInterfaces().Contains(typeof(IInterface))) { if ((IInterface)_Property.GetValue(this, null) != null) { ((IInterface)_Property.GetValue(this, null)).SomeIInterfaceMethod(); } } } }
相關問題
- 1. Java - 如何檢查類是否繼承某些類或接口?
- 2. C#如何檢查一個類是否實現泛型接口?
- 3. 如何檢查一個接口是否在C#中擴展另一個接口?
- 4. 如何檢查是否一個類實現一個接口
- 5. 如何檢查在C接口類型++/CLI
- 6. 如何從另一個程序集中檢索類的接口?
- 7. python:如何檢查出口接口
- 8. 如何一些預檢查
- 9. 如何檢查哪些類類型的對象,當它從一個類
- 10. 打字稿接口類型從一開始教程檢查
- 11. iOS:如何檢查給定的類是一種UIViewController類?
- 12. 如何檢查某些東西是否支持通用接口?
- 13. C#檢查通用接口的實現
- 14. 如何檢查使用c激活哪些窗口功能
- 15. 從接口類型檢測類
- 16. 爲什麼從一種類型到同一種類型需要檢查?
- 17. 檢查一個類型參數是一個特定的接口
- 18. IEnumerable接口作爲一種類型?
- 19. 如何編寫從接口到另一種類型的隱式轉換?
- 20. 如何檢索父接口的實現類/接口?
- 21. 如何創建類提供一些接口的實現
- 22. 如何檢查模板模板類的接口
- 23. 如何檢查類類型,看看它是否實現了一個接口
- 24. 從匿名類中的接口實現一種方法
- 25. 如何如果給定類型實現一些接口
- 26. c#如何檢查對象是否屬於某種類型
- 27. C# - 接口類
- 28. c#串口:接收一些回聲
- 29. C++編譯時接口實現檢查
- 30. 接口作爲一種功能或接口作爲類型