226

次のことを想像してください

タイプ T にはフィールド Company があります。次のメソッドを実行すると、完全に機能します。

Type t = typeof(T);
t.GetProperty("Company")

次の呼び出しでは null になります

Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)

誰かがアイデアを得ましたか?

4

3 に答える 3

466

デフォルトの検索フラグを上書きしました。新しいフラグを指定する場合は、プロパティが見つかるようにすべての情報を提供する必要があります。例えば:BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance

于 2008-11-05T10:09:35.827 に答える
53

追加する必要がありますBindingFlags.Public | BindingFlags.Instance

于 2008-11-05T10:07:38.420 に答える
13

おかげさまで、今日はピンチで本当に助かりました。監査情報を保存しましたが、プロパティ名の大文字と小文字が正しくありません。(監査はデータレイヤーに組み込まれています。)とにかく、バインドフラグとして IgnoreCase を追加する必要がありましたが、同僚がこの答えを見つけるまで、それでも機能しませんでした。結果の関数:

public static void SetProperty(Object R, string propertyName, object value)
{
    Type type = R.GetType();
    object result;
    result = type.InvokeMember(
        propertyName, 
        BindingFlags.SetProperty | 
        BindingFlags.IgnoreCase | 
        BindingFlags.Public | 
        BindingFlags.Instance, 
        null, 
        R, 
        new object[] { value });
}

これは、私が DotMagic と呼んでいるクラスの一部です。

于 2009-09-22T16:19:02.917 に答える