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

问题描述 投票:0回答:1

我首先在公司的一个项目中使用 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”应用这两个属性的功能。绝对可以减少打字。

c# entity-framework attributes custom-attributes
1个回答
1
投票

正如@Florian 所说:事情不是这样的。

属性最终是从基类属性派生的类。您想要做的是创建一个新属性(类),它结合了属性

Column
StringLength
的属性。

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

这也是代码风格的问题。如果您可以做您想做的事,那么您就可以向开发人员隐藏最初的预期行为。他必须打开新属性并意识到,这是另外两个属性的组合。任何混淆代码的行为通常都被认为是不良行为(当然,除了它增强可读性之外)

© www.soinside.com 2019 - 2025. All rights reserved.