を呼び出すと、すべてのgetステートメントとsetステートメントを含むinter.GetMethods()
メソッドのリストが表示されます。(内の)各項目がgetまたはsetステートメントであるかどうかを確認するにはどうすればよいですか。foreach
foreach (MethodInfo meth in inter.GetMethods()) Console.WriteLine(meth.Name);
正確に最もエレガントではありませんが、機能します。
List<MethodInfo> propertyGetterSetters = new List<MethodInfo>();
foreach(PropertyInfo prop in typeof(MyType).GetProperties())
{
var getter = prop.GetGetMethod();
var setter = prop.GetSetMethod();
if (getter != null)
propertyGetterSetters.Add(getter);
if (setter != null)
propertyGetterSetters.Add(setter);
}
List<MethodInfo> nonPropertyMethods = typeof(MyType).GetMethods().Except(propertyGetterSetters).ToList();
を使用することもできますMethodInfo.IsSpecialName
が、プロパティだけでなく他の特殊なケースも取り上げることができますが、テストして機能することを確認できる単純なクラスがある場合は、代わりに使用できます。私はそれをお勧めしません。上記のようなユーティリティメソッドを使用したいだけです。
var nonPropertyMethods = typeof(MyType).GetMethods().Where(m => !m.IsSpecialName);