これが可能かどうかを知りたいと思います。私は、自動実装されたベースクラスのプロパティをオーバーライドしました。私はデフォルト設定に対して "不足している"プロパティを解決するためにオーバーライドのロジックを提供しました。reflection- base.Propertyをthis.Propertyとして使用してベースクラスプロパティ値を取得する
ここで、リフレクションを使用して、デフォルト値が使用されているかどうか、または実際の値が使用されているかどうかを確認したいとします。つまり、base.Property
がnullであるかどうかを確認する必要がありますが、リフレクションを使用します。これは機能しません、単にサブクラスの値を取得します(デフォルトでは解決されるため、nullではありません)。
var property = this.GetType().GetProperty(e.PropertyName);
if(property.GetValue(this, null) == null))
OnPropertyChanged(e.PropertyName);
も試してみました:
var property = this.GetType().BaseType.GetProperty(e.PropertyName);
if(property.GetValue(this, null) == null))
OnPropertyChanged(e.PropertyName);
は、基本クラスの値にアクセスするためにリフレクションを使用して、それは可能ですか?
UPDATE:
コメントからのアドバイスに続いて、私はキックのために、以下のことを試してみました。
var method1 = this.GetType().BaseType.GetMethods().First(x => x.Name.Contains(e.PropertyName));
var method = this.GetType().BaseType.GetProperty(e.PropertyName).GetGetMethod();
var methodValue = method1.Invoke(this, null);
同時にbase.Property
戻るヌルながら、これらの両方は、依然として、「由来する」の値を返します。
プロパティは仮想ですか? – Tigran
@Tigranはい、そうでなければ、私はそれを無効にすることはできませんでしたか? – Max
あなたは "新しい"を使用することができます、それは.. – Tigran