【问题标题】:Can you add a constraint that the Attribute can only be added to a property with public getter and setter in C#您可以添加一个约束,即属性只能添加到 C# 中具有公共 getter 和 setter 的属性中吗
【发布时间】:2014-04-17 12:27:13
【问题描述】:

在 C# 中,您可以使用 AttributeTargetAttribute 限制属性的范围。在编译时检查此约束。

有没有办法强制如果目标是AttributeTargets.Property,getter 和 setter 都必须是公共的?

【问题讨论】:

    标签: c# reflection properties setter getter


    【解决方案1】:

    不在编译时。如果您通过属性中的反射来执行此操作,那么您可以在运行时强制执行它。我的问题是:你为什么要强制执行?

    【讨论】:

    • 因为我想使用反射调用 getter 和 setter。当然,您可以在运行时检查此类约束。然而,在编译时这样做会更方便,因为这样可以防止出错。
    • 我强烈重新考虑你的设计,因为这有一种“代码味道”,但无论如何我的答案是正确的——你不能在编译时使用属性来做到这一点。
    • 好吧,我正在实现某种序列化程序,例如XmlSerializer。我看不出如何设置对它的类一无所知的实例的值。
    猜你喜欢
    • 2017-04-10
    • 1970-01-01
    • 2017-06-27
    • 2021-11-06
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    相关资源
    最近更新 更多