在域实体中使用DescriptionAttribute

时间:2013-02-26 18:54:41

标签: c# .net oop attributes domain-driven-design

我目前正在开发一个需要在运行时公开其部分元数据/文档的系统。我知道有一些方法可以使用XML注释并通过自行开发的Reflection扩展方法将这些数据带回应用程序。

我觉得从System.ComponentModel命名空间(但位于系统程序集中)使用description属性可能更容易。这样我和其他开发人员就可以使用常规反射来获取字段描述。我更喜欢使用它而不是使用自定义属性。这种方法的缺点是什么?

示例:

public Customer
{
    public int Id { get; set; }
    [Description("The common friendly name used for the customer.")]
    public string Name { get; set; }
    [Description("The name used for this customer in the existing Oracle ERP system.")]
    public string ErpName { get; set; }
}

1 个答案:

答案 0 :(得分:1)

我正在做同样的事情(使用ERP软件不会少!)并且没有遇到任何缺点。根据您的体系结构,您可能认为在某种情况下存在缺陷的一点是许多文档工具直接或间接地基于XML注释。他们可能无法获取描述属性。但在我们的体系结构中,Description属性代码实际上并不是文档的主/源。我们有一个MetaData数据库,用于定义和描述每个属性。我们可以从同一个源生成XML注释 Description属性。实际上在我们的例子中,我们根本不生成XML注释,而是直接生成通常由XML注释直接生成的XML文件。这是我们使用的文档工具使用的文件。如果你想使用依赖于xml注释的xml文件输出的文档工具,如果它不能直接接受Describiton属性,你可以编写一个简单的实用程序来将描述属性提取到类似的XML文件中。