我正在遍歷類的FieldInfo
。我希望能夠測試給定字段是否屬於某種類型。如何測試反射字段的類型是否爲或指定類型
具體問題是我想知道所有從SortedList
派生的字段。所以他們不完全SortedList
,但每一個是SortedList
。 鑑於該字段的FieldInfo
,我該如何測試?
我正在遍歷類的FieldInfo
。我希望能夠測試給定字段是否屬於某種類型。如何測試反射字段的類型是否爲或指定類型
具體問題是我想知道所有從SortedList
派生的字段。所以他們不完全SortedList
,但每一個是SortedList
。 鑑於該字段的FieldInfo
,我該如何測試?
而不是尋找排序列表的類型,你也可以尋找諸如IDictionary的,ICollection的這SortedList派生自接口。我提供我的博客上一個有趣的閱讀這給反映的接口的例子:
Reflect Interface from Unknown Assembly in C#
HTH(從HR南下來你;-))
bool canCast = (fieldInfo.FieldType == typeof(SortedList) ||
(fieldInfo.FieldType.IsSubclassOf(typeof(SortedList)));
if ((fieldInfo.FieldType == typeof(SortedList)) || fieldInfo.FieldType.IsSubclassOf(typeof(SortedList))
Console.WriteLine("Field {0} is of type {1}", fieldInfo.Name, typeof(blah.Name));
此代碼是未經測試,但大致就是我以前使用過。
您可以使用IsAssignableFrom
方法來執行此測試,像這樣:
var isSortedList = typeof(SortedList).IsAssignableFrom(fieldInfo.FieldType);
這其實是一個更好的答案.. 。 – ivowiblo 2011-12-24 04:24:16