[英]How and why is ObsoleteAttribute disallowed for property accessors?
[英]How to change property accessors on runtime
我正在寻找一种在运行时更改/添加给定类的属性的访问器的方法。 下面的示例代码在类的.ctor上运行,我想到达的位置是将“ TheSetMethod”添加到“设置”每个“字段”的访问器中,以便在运行时更改字段。 仅供参考:在此背后存在实现约束,这使我可以以这种方式执行此操作,而不是使用标准的“ get; 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)
{
}
任何帮助将不胜感激。 干杯
您可以实现自定义DynamicObject
类型来手动处理访问器。 不过,这仅适用于.NET 4+。
为什么不只是将代码添加到设置器中,然后使用变量来确定代码是否应该执行? 在我看来,这听起来像是一个糟糕的设计,因为使安装员的“动态”看起来也无法很好地进行测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.