我想在类的方法中将类的属性重置为默认值。我的类被实例化一次(实际上是一个 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);
}
}
}
...
...
}