私は同じプロパティを使用するインターフェイス継承システムを作成しようとしていますが、それは常に派生型です。したがって、基底プロパティは、引き出しインタフェースによって何らかの形でオーバーライドまたは隠される必要があります。派生C#インターフェイスプロパティは、同じ名前のベースインターフェイスプロパティをオーバーライドできますか?
例えば、夫と妻に由来する2つのインタフェースManとWomanをインタフェースとします。女性と妻は "ダーリン"の特性を持っている一方、男と夫のインターフェイスは両方 "恋人"のプロパティを持っています。今、男の「恋人」の財産は女性のタイプですが、夫の同じ「恋人」財産は女性(女性から派生したもの)でなければなりません。そして、女性と妻の "ダーリン"の財産と同じです。
public interface Man // base interface for Husband
{
Woman sweetheart { get; set; }
}
public interface Woman // base interface for Wife
{
Man darling { get; set; }
}
public interface Husband : Man // extending Man interface
{
new Wife sweetheart { get; set; } // narrowing "sweetheart" property's type
}
public interface Wife : Woman // extending Woman interface
{
new Husband darling { get; set; } // narrowing "darling" property's type
}
public class RandomHusband : Husband // implementing the Husband interface
{
private RandomWife wife;
public Wife sweetheart { get { return wife; } set { wife = value; } }
}
public class RandomWife : Wife // implementing the Wife interface
{
private RandomHusband husband;
public Husband darling { get { return husband; } set { husband = value; } }
}
このコードは間違っていますが、機能しません。私は基本的なMan.sweetheart
とWoman.darling
のプロパティを実装しておらず、タイプが一致しないのでHusband.sweetheart
とWife.darling
は実装されないことを通知しています。プロパティの型を派生型に絞り込む方法はありますか?あなたはC#でそれをどのように達成していますか?
おもしろい質問:) – nawfal