【问题标题】:Override property setter and getter覆盖属性设置器和获取器
【发布时间】:2014-03-11 02:28:11
【问题描述】:

有没有办法用属性覆盖自动属性的 setter 和 getter?

像这样:

[CustomAttribute]
public int Value { get; set; }

...

public class CustomAttibute : Attribute
{
    public override NotExistingPropertySetter(object value)
    {    
        if (((int)value) < 10 )
        {
            value = 10;
        }
    }
}

【问题讨论】:

    标签: c# .net properties attributes custom-attributes


    【解决方案1】:

    我相信它会通过 AOP 实现这一点

    【讨论】:

    • 虽然这不是完全错误的,但 SO 直接支持代码,并且句子通常在四个字母的单词中间没有图像的情况下读起来更好。 (或任何词,就此而言!)不过我喜欢你的语法高亮显示。
    • 您错过了 PostSharp,这是原始发布者可能没有的第三方工具。毕竟,它并不便宜。
    【解决方案2】:

    没有。属性永远不会“执行”。您需要构建一个构造来查找属性并在找到它时执行某些操作。

    .NET 中的 AoP(面向方面​​编程)只能通过使用 PostSharp 等第三方软件来实现。

    【讨论】:

    • 此外,您可能会发现,如果您的目标只是不多次编写相同的属性代码,那么您可能使用了错误的抽象。
    猜你喜欢
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 2014-07-24
    • 2017-08-29
    • 2015-11-01
    相关资源
    最近更新 更多