次のことを想像してください
タイプ T にはフィールド Company があります。次のメソッドを実行すると、完全に機能します。
Type t = typeof(T);
t.GetProperty("Company")
次の呼び出しでは null になります
Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)
誰かがアイデアを得ましたか?
次のことを想像してください
タイプ 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 と呼んでいるクラスの一部です。