如.NET Reflection set private property中所述,可以使用私人setter来设置属性。但是,当在基类中定义属性时,会引发System.ArgumentException:“找不到属性集方法”。在衍生类型中找不到属性集方法
一个例子可以是:
using System;
class Test
{
public DateTime ModifiedOn { get; private set;}
}
class Derived : Test
{
}
static class Program
{
static void Main()
{
Derived p = new Derived();
typeof(Derived).GetProperty("ModifiedOn").SetValue(
p, DateTime.Today, null);
Console.WriteLine(p.ModifiedOn);
}
}
有谁知道的方式来处理这种情况呢?
编辑:给出的例子是一个简单的例子。在现实世界中,我不知道该属性是在基类中定义的还是在基类的基础中定义的。
如果基本类型是已知的,这肯定会起作用。请参阅我的编辑。 – tafa 2012-04-06 09:21:29