今、私は持っています:targetType.GetMethod("get_Item", BindingFlags.Instance)
もっと良いものはありますか?
今、私は持っています:targetType.GetMethod("get_Item", BindingFlags.Instance)
もっと良いものはありますか?
私は使用することを好みますPropertyInfo.GetIndexParameters
:
var indexers = targetType.GetProperties(bindingFlags)
.Where(p => p.GetIndexParameters().Any());
.Select(p => p.GetGetMethod());
現在indexers
は、指定された にIEnumerable<MethodInfo>
一致するインデクサーのゲッターのです。BindingFlags
bindingFlags
コードが からどのように読み取られ、targetType
に一致するプロパティを取得しbindingFlags
、インデクサーであるプロパティを取得してから、ゲッターに投影するかに注目してください。マジック ストリングを使用するよりもはるかに謎が少なく"get_Item"
、複数のインデクサーを簡単に処理できます。
1 つしかないことがわかっている場合は、もちろん を使用できますSingle
。多くの中から特定のものを探している場合は、それにGetIndexParameters
応じて結果を調べることができます。
適切な方法は、クラスのDefaultItemAttributeを取得することです。インデクサープロパティの名前が付いています。「アイテム」である必要はありません。VB.NETのような言語では、任意のプロパティをインデクサーとして指定できます。Jasonのコードも失敗します。複数のインデックス付きプロパティが存在する可能性があります。ただし、デフォルトは1つだけです。