我可以用一個例子來最好地說明這個問題。強制接口/類在派生類中定義字符串變量?
我有一個強制開發人員實現特定功能的界面。我還希望這個接口強制用戶實現一個set或者get屬性,該屬性設置類中存儲的字符串中派生類的名稱。因此,如果開發人員創建,從這個接口派生新類,他們被迫:
- 創建的方法的定義。
- 存儲在一個字符串的派生類的所謂「derivedType」
我想的名字存儲爲派生類型的字符串,因爲我希望做一些類型在運行時檢查名稱在實現此接口的對象上。
public interface someInterface
{
int someMethod(int x);
string derivedType {get; set;}
}
public derivedClass : someInterface
{
public int someMethod (int x) {...};
public string derivedType
{
get {return this.derivedType;}
set {derivedType = "derivedClass";}
}
}
爲什麼要用setter創建一個屬性,但忽略它試圖設置的值?爲什麼你將值設置爲'derivedType'而不是'derivedClass'? –
哦,並且注意聲明*屬性*與聲明*變量*不同。 –
@JonSkeet他也從'derivedClass'中省略了'class'關鍵字。 –