2

次のように、別の基本クラスからプロパティを継承し、新しいものを追加する基本クラスがあります。

public class DataSourceWithIntervalBase : DataSourceBase
{
    [MaxLength(100)]
    [Display(Name = "Interval")]
    public virtual string Interval1 { get; set; }
}

について特別なことは何もありませんDataSourceBase。ユーザーが編集できるようにするために必要なプロパティがいくつかあるだけです。

DataSourceWithIntervalBaseただし、さらに他のクラスに継承されます。Displayこれらは、UI の目的で、属性を除いてすべて非常に似ています。

たとえば、これらのクラスの 1 つを次に示します。

public class SqlServerDataSource : DataSourceWithIntervalBase
{
    public SqlServerDataSource()
    {
        FeedType = FeedType.SqlServer;
    }

    [Required]
    [MaxLength(500)]
    [Display(Name = "Connection String")]
    public override string Url { get; set; }

    [MaxLength(100)]
    [Display(Name = "Table Name")]
    public override string Interval1 { get; set; }
}

ここで 2 つのプロパティをオーバーライドしていることがわかります。Url、 で見つかったDataSourceBase、およびInterval1で見つかったDataSourceWithIntervalBase

この継承を使用すると、何も壊れないようです。それは機能します。ただし、Display属性はオーバーライドされません。Urlof には実際にはDataSourceBaseありませんが、それでもエディター ビューで使用する場合は考慮されません。プロパティは次のInterval1ようにラベル付けされます。

Interval

Displayでは、継承クラスに基本クラスの属性を適切にオーバーライドさせるにはどうすればよいでしょうか?

4

1 に答える 1