1

部分クラスを含む 2 つのファイルがあります。生成されたものと手動のもの。クラス メンバーの属性の 1 つを変更するために、コンパイル時に属性が適用される順序をオーバーライド、カスケード、または指定したいと考えています。

生成されたコード:

[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("MultilineText") を UIHint("RichText") でオーバーライドすることです。これは、ある開発マシンでは正常に機能し、別の開発マシンでは機能していないため、1) 特定の属性を 2 回指定するべきではない、または 2) 属性を上書きする順序を強制する方法がある可能性があります。ちゃんと。

4

2 に答える 2

0

いいえ。キーワードpartialは、クラス (構造体など) の定義が 2 つ以上のソース ファイルに分割されていることを意味します。すべての部分を単一のファイルにコピーしてpartialキーワードを削除すると、同じになります。技術的には、 Are Method Attributes Inherited in C#?を使用して派生クラス の属性を変更できますか?[AttributeUsage(Inherited=false)]

于 2015-09-29T18:23:34.333 に答える