我正在寻找一种在运行时更改/添加给定类属性的访问器的方法。 示例代码如下所示,在类的.ctor上运行,我想要达到的是通过在运行时更改字段来将'TheSetMethod'添加到每个'字段'的'set'访问器中。 仅供参考:这背后有一个实施约束,这使我以这种方式做到这一点而不是使用标准的“get; set;”祖先,所以我不能'得到;设定;'在设计时间。
public string field1;
.ctor()
{
Type typeWebConfig = this.GetType();
MemberInfo[] Fields = typeWebConfig.GetMembers(BindingFlags.Public |
BindingFlags.Instance );
foreach(MemberInfo member in Fields)
if(member.MemberType == MemberTypes.Field)
{
FieldInfo field = (FieldInfo)member;
//add a delegate method to field's 'SET'
}
}
void TheSetMethod(string propName)
{
}
任何帮助将不胜感激。 干杯
答案 0 :(得分:0)
您可以实现自定义DynamicObject
类型来手动处理访问者。这只适用于.NET 4+。
答案 1 :(得分:-1)
为什么不直接将代码添加到setter中,然后使用变量来确定代码是否应该执行?在我看来,这听起来像是一个糟糕的设计,因为制作者的“动态”似乎也无法很好地进行测试。