質問: クラスTに対して、以下のようにMethodInfoをループで取得する場合に、 MethodInfoがプロパティなのかメソッドなのかを判定したいと考えています。 foreach( MethodInfo mi in T.GetMethods() ) { //miがプロパティなのかメソッドなのかの判定処理 } プロパティの場合、MethodInfoのNameを調べると「set_○○○」「get_○○○」(○○○はプロパティ名)が取得できるので、これを判断材料にしようと考えましたが、もし、「set_○○○」のようなメソッドを持つクラスがあると判断できません。 どのようにして判断するのが最適なのでしょうか? ご教示いただければ幸いです。
回答: こんにちは。 プロパティによって定義されたメソッドはMethodInfoの`IsSpecialName`プロパティがtrueになります。 Nameのget_、set_プレフィックスの有無での絞り込みと組み合わせれば正確にプロパティを判別できます。