是否可以将两个C#属性合并为一个?

时间:2015-04-14 06:49:57

标签: c# entity-framework attributes custom-attributes

我在我公司的一个项目中首先使用EF6代码。在项目中,POCO类中有几个存储波斯日期信息的属性 (例如1394/01/24)。在我们的数据库中,这些值存储在" CHAR(10)"列。

我使用字符串属性将这些值存储在我的POCO中,并且必须附加" ColumnAttribute"和" StringLengthAttribute"到每个日期属性:

public class MyPoco
{
    ...

    [Column(TypeName="CHAR")]
    [StringLength(10, MinimumLength=10)]
    public string MyDate {get; set;}

    ...
}

我很想知道我是否有办法创建一个自定义属性,它结合了这两个属性的行为,以便我可以这样做:

public class MyPoco
{
    ...

    [DateColumn]
    public string MyDate {get; set;}

    ...
}

其中" DateColumnAttribute"应用这两个属性的作用。它绝对可以减少打字。

1 个答案:

答案 0 :(得分:1)

正如弗洛里安所言:那不管怎么样

属性最后是一个派生自基类Attribute的类。你要做的是创建一个新的属性(类),它结合了属性Column和StringLength的属性。

这是不可能的,因为我们必须创建一个新属性,它从两个属性一起派生,但这是不可能的,因为.NET不允许多重继承。

这也是代码风格的问题。如果您可以执行您想要的操作,则会将原始预期行为隐藏到开发人员。他必须打开新属性并意识到,它是另外两个人的组合。所有混淆代码的东西通常被认为是不良行为(当然除了它增强了可读性)