如.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