我想創建一個接口繼承系統,使用相同的屬性,但始終是一個進一步的派生類型。所以基本屬性應該以某種方式覆蓋或隱藏在派生接口中。可以派生的C#接口屬性覆蓋具有相同名稱的基礎接口屬性嗎?
舉個例子,兩個接口,男人和女人,衍生成丈夫和妻子,也接口。男人和丈夫的界面都有一個「甜心」財產,而女人和妻子有一個「親愛的」財產。現在,男人的「甜心」財產屬於女人類型,而丈夫同樣的「甜心」財產應該是妻子(源自女人)。和女人和妻子的「親愛的」財產一樣。
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