我在我公司的一个项目中首先使用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"应用这两个属性的作用。它绝对可以减少打字。
答案 0 :(得分:1)
正如弗洛里安所言:那不管怎么样
属性最后是一个派生自基类Attribute的类。你要做的是创建一个新的属性(类),它结合了属性Column和StringLength的属性。
这是不可能的,因为我们必须创建一个新属性,它从两个属性一起派生,但这是不可能的,因为.NET不允许多重继承。
这也是代码风格的问题。如果您可以执行您想要的操作,则会将原始预期行为隐藏到开发人员。他必须打开新属性并意识到,它是另外两个人的组合。所有混淆代码的东西通常被认为是不良行为(当然除了它增强了可读性)