【问题标题】:Using value of propertie in his own custom attribute在他自己的自定义属性中使用属性值
【发布时间】:2015-07-27 07:11:35
【问题描述】:

我们在您的业务逻辑中使用了一些 DTO。我也使用这些 DTO 进行打印。所以有一个自定义属性printable 将在打印框架中用于识别要打印的属性。在某些情况下,有必要为打印引擎预先格式化该值。 我的想法是使用这样的构造:

[Printable(formatedValue = DoFormatingXY(MyProperty))]
public int MyProperty{ get; set; }

但不幸的是,这不起作用(除了不得不再次使用属性名称令人不快的事实之外):

Error   An object reference is required for 
        the non-static field, method, or property '...MyPropertie.get'

所以我明白问题出在哪里,但是如何处理呢?一种想法是使用委托,但有很多具有不同方法签名的格式化方法。

【问题讨论】:

    标签: c# .net properties attributes


    【解决方案1】:

    属性只是元数据,而不是代码。因此,将其更改为:

    [Printable(FormatStyle = FormatStyles.XY)]
    public int MyProperty{ get; set; }
    

    然后打印机代码可以检查属性的 FormatStyle 参数并将请求的格式应用于属性。

    【讨论】:

    • FormatStyle 是某种枚举?如果是:那么创建一个开关盒以将枚举映射到具体的格式化方法?你是这么想的吗?
    • @Micha,是的,这正是我想说的:)
    • @Micha,虽然我会使用 Dictionary<FormatStyles, Func<...>> 进行查找,而不是 switch 语句,但这是个人选择。
    • 好的,谢谢您的回答。确实有帮助->为此+1。如果没有更好的办法,我会接受你的回答作为问题的解决方案。
    • 我已经在我的代码中尝试了您的建议。效果很好。谢谢。
    猜你喜欢
    • 2015-04-26
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2012-02-15
    相关资源
    最近更新 更多