如果我有一個接口MyInterface1
如何啓動類與接口的接口內
interface MyInterface1
{
ImyGod myproperty { get; set; }
}
如果我有一個類做到以下幾點,它抱怨
class myClass : IMyInterface1
{
myGod myproperty { get; set; }
}
我應該iniatiate MyClass的myGod在這裏? 謝謝。
如果我有一個接口MyInterface1
如何啓動類與接口的接口內
interface MyInterface1
{
ImyGod myproperty { get; set; }
}
如果我有一個類做到以下幾點,它抱怨
class myClass : IMyInterface1
{
myGod myproperty { get; set; }
}
我應該iniatiate MyClass的myGod在這裏? 謝謝。
這是不可能的。爲了實現一個接口,成員的簽名必須是,確切地說與接口中定義的簽名相同。您將需要更改接口或類的實現,以使屬性的類型完全匹配。
因爲你的財產有一個setter這意味着,根據界面,你將能夠設定任何對象實現ImyGod
該財產,但由於派生類的類型不是myGod
相反,它可以」 t支持ImyGod
的任何其他實現。
你可以做的是使用一個通用的接口,像這樣:
interface MyInterface1<T> where T : ImyGod
{
T myproperty { get; set; }
}
class myClass : IMyInterface1<myGod>
{
myGod myproperty { get; set; }
}
這將彙編和工作如期進行,也防止有人一someOtherGod
例如設置爲它顯然不能支持該屬性。
這就是我的想法。謝謝。 – NewDTinStackoverflow
你應該申報財產爲公衆:
class myClass : IMyInterface1
{
public ImyGod myproperty {get; set;}
}
不,我需要在myClass中使用myGod而不是ImyGod – NewDTinStackoverflow
@NewDTinStackoverflow如果你知道答案,爲什麼要問? – McGarnagle
@NewDTinStackoverflow:然後將您的界面更改爲「myGod」,而不是「ImyGod」。這很簡單。 – code4life
你在哪裏看到這個? –
只需閱讀編譯器錯誤消息。 –
請嘗試格式化您的代碼示例。 – millimoose