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-如果返回的数组为空,则它不是索引器。

Jon Skeet answered 2020-08-10T14:39:25Z
1 votes

另一种选择是使用:

myType.GetProperties().Except(myType.GetDefaultMembers().OfType<PropertyInfo>());

GetDefaultMembers将以C#返回所有编译器生成的索引器。 这样做的好处是,不必为了确定哪个属性是索引器而需要对每个属性进行反思。

对于所有允许的.NET框架语言,这可能不是一个通用的解决方案,但是我目前不知道有任何反例。

glopes answered 2020-08-10T14:39:54Z
translate from https://stackoverflow.com:/questions/4746188/propertyinfo-is-the-property-an-indexer