質問

次を想像してください

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

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

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

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

誰でもアイデアを思いつきましたか?

役に立ちましたか?

解決

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

他のヒント

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

ありがとう、今日これは本当にピンチで助けてくれました。監査情報は保存しましたが、プロパティ名の大文字と小文字が正しくありません。 (監査はデータレイヤーに組み込まれています。)とにかく、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と呼ぶクラスの一部です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top