rksoftware

Visual Studio とか C# とかが好きです

大文字小文字を区別せずにプロパティ情報を取得する

PropertyInfo を取得する際、大文字小文字を区別して取得したい方は非常にまれだと思います。
大多数の大文字小文字を区別せずに PropertyInfo を取得したい方向けのお話です。ちなみに私も大文字小文字を区別せずに PropertyInfo を取得したい派です。

■ BindingFlags.IgnoreCase

BindingFlags.IgnoreCase が大文字小文字を区別せずに取得するフラグです。しかし、次のコードは期待通りに動作しません。

var property = type.GetProperty(propertyName, BindingFlags.IgnoreCase);
// property はnull。PropertyInfo が取得できていない。

期待通りでないこの挙動が仕様です。

■ 期待通りの動作をするコード

var property = type.GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase);

何度も失敗すると思います、というか私が何度も失敗しています。次失敗したときに検索してコピペしましょう。