次のように、別の基本クラスからプロパティを継承し、新しいものを追加する基本クラスがあります。
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
属性はオーバーライドされません。Url
of には実際にはDataSourceBase
ありませんが、それでもエディター ビューで使用する場合は考慮されません。プロパティは次のInterval1
ようにラベル付けされます。
Interval
Display
では、継承クラスに基本クラスの属性を適切にオーバーライドさせるにはどうすればよいでしょうか?