繁体   English   中英

如何在运行时更改属性访问器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM