我正在遍历类的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