CodeGo.net> C#-PropertyInfo:属性是一个索引器?
我有以下代码:
PropertyInfo[] originalProperties = myType.GetProperties();
我想从propInfo.Name == "Item"
中排除所有索引器(myVar [“ key”]作为名为“ Item”的属性出现)。
正确的方法是什么?
排除所有不能选择propInfo.Name == "Item"
的属性。
JYL asked 2020-08-10T14:39:20Z
2个解决方案
71 votes
调用PropertyInfo.GetIndexParameters
-如果返回的数组为空,则它不是索引器。
1 votes
另一种选择是使用:
myType.GetProperties().Except(myType.GetDefaultMembers().OfType<PropertyInfo>());
GetDefaultMembers
将以C#返回所有编译器生成的索引器。 这样做的好处是,不必为了确定哪个属性是索引器而需要对每个属性进行反思。
对于所有允许的.NET框架语言,这可能不是一个通用的解决方案,但是我目前不知道有任何反例。