簡體   English   中英

是否可以將兩個C#屬性合並為一個?

[英]Is it possible to merge two C# attributes into one?

我在我公司的一個項目中首先使用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”應用這兩個屬性的作用。 它絕對可以減少打字。

正如弗洛里安所言:那不是它的運作方式

Attribute最終是一個派生自基類Attribute的類。 您要做的是創建一個新屬性(類),它結合了屬性Column和StringLength的屬性。

這是不可能的,因為我們必須創建一個新屬性,它從兩個屬性一起派生,但這是不可能的,因為.NET不允許多重繼承。

這也是代碼風格的問題。 如果您可以執行您想要的操作,則會將原始預期行為隱藏到開發人員。 他必須打開新屬性並意識到,這是另外兩個人的組合。 所有混淆代碼的東西通常被認為是不良行為(當然除了它增強了可讀性)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM