クラスのメソッド内でクラスのプロパティをデフォルト値にリセットしたいと思います。私のクラスは一度インスタンス化され(実際にはMVVMフレームワークのViewModelです)、ViewModel全体を破棄して再作成したくありません。多くのプロパティをクリアするだけです。以下のコードは私が持っているものです。私が見逃しているのは、SetValue メソッドの最初のパラメーターを取得する方法だけです。これは、設定しているプロパティのインスタンスであることはわかっていますが、それにアクセスする方法がわかりません。「オブジェクトがターゲット タイプと一致しません」というエラーが表示されます。
public class myViewModel
{
...
...
public void ClearFields()
{
Type type = typeof(myViewModel);
PropertyInfo[] pi = type.GetProperties();
foreach (var pinfo in pi)
{
object[] attributes = pinfo.GetCustomAttributes(typeof(DefaultValueAttribute), false);
if (attributes.Length > 0)
{
DefaultValueAttribute def = attributes[0] as DefaultValueAttribute;
pinfo.SetValue(?, def.Value, null);
}
}
}
...
...
}