1

我有2個文件包含部分類。生成和手動之一。我想覆蓋,級聯或以其他方式指定在編譯時應用屬性的順序,以便更改其中一個類成員屬性。有沒有辦法來覆蓋部分類中屬性的應用順序?

生成的代碼:

[Table("dbo.product_variation")] 
public partial class ProductVariation 
{ 
    [Key] 
    [Column("id")] 
    public int Id { get; set; } 

    [Required] 
    [Column("style_id")] 
    public int StyleId { get; set; } 

    [Required] 
    [Column("name"), StringLength(400)] 
    public string Name { get; set; } 

    [Column("general_description"), StringLength(2048), UIHint("MultilineText")] 
    public string GeneralDescription { get; set; } 
} 

手冊代碼:

[MetadataType(typeof(ProductsMetadata))] 
public partial class ProductVariation 
{ 
} 

public partial class ProductsMetadata 
{ 
    [UIHint("RichText")] 
    public string GeneralDescription { get; set; } 
} 

這裏的真正意圖是UIHint( 「富文本」)覆蓋UIHint( 「MultilineText」)。這是工作正常的一個開發機器,而不是在另一個開發機器,這導致我相信1)也許我不應該指定一個特定的屬性兩次,或2)也許有一種方法來強制命令覆蓋屬性正常。

回答

3

這是不可能改變派生類的屬性,在屬性源的排序沒有任何意義的編譯器。

17.2 Attribute specification - MSDN

在哪些屬性在這樣的列表中指定的順序,並在其中連接到相同節目實體區段佈置是 的 順序,是不是顯著

當你有部分類,不同的屬性用於不同的源文件,編譯器只是合併它們。

正如我所說的,你不能讓一個屬性聲明覆蓋另一個聲明,但是當你在運行時使用該屬性的代碼的控制權時,你可以做的是獲取應用的所有屬性,只想使用其中之一。但我不認爲這是你的情況。

+0

我可以控制生成的代碼以及手動代碼,所以我可以做出一些讓步。這很清楚地回答了我的問題。謝謝! – secretwep

0

編號關鍵字partial表示類(結構等)定義被分割爲兩個或多個源文件,僅此而已。如果您將每個部分複製到單個文件並刪除partial關鍵字,它將是相同的。 技術上講,你可以通過使用[AttributeUsage(Inherited=false)]Are Method Attributes Inherited in C#?

相關問題