2012-11-05 24 views
0

如果我有一個接口MyInterface1如何啓動類與接口的接口內

interface MyInterface1 
{ 
    ImyGod myproperty { get; set; } 
} 

如果我有一個類做到以下幾點,它抱怨

class myClass : IMyInterface1 
{ 
    myGod myproperty { get; set; } 
} 

我應該iniatiate MyClass的myGod在這裏? 謝謝。

+0

你在哪裏看到這個? –

+2

只需閱讀編譯器錯誤消息。 –

+0

請嘗試格式化您的代碼示例。 – millimoose

回答

2

這是不可能的。爲了實現一個接口,成員的簽名必須是,確切地說與接口中定義的簽名相同。您將需要更改接口或類的實現,以使屬性的類型完全匹配。

因爲你的財產有一個setter這意味着,根據界面,你將能夠設定任何對象實現ImyGod該財產,但由於派生類的類型不是myGod相反,它可以」 t支持ImyGod的任何其他實現。

你可以做的是使用一個通用的接口,像這樣:

interface MyInterface1<T> where T : ImyGod 
{ 
    T myproperty { get; set; } 
} 

class myClass : IMyInterface1<myGod> 
{ 
    myGod myproperty { get; set; } 
} 

這將彙編和工作如期進行,也防止有人一someOtherGod例如設置爲它顯然不能支持該屬性。

+0

這就是我的想法。謝謝。 – NewDTinStackoverflow

0

你應該申報財產爲公衆:

class myClass : IMyInterface1 
{ 
    public ImyGod myproperty {get; set;} 
} 
+2

不,我需要在myClass中使用myGod而不是ImyGod – NewDTinStackoverflow

+0

@NewDTinStackoverflow如果你知道答案,爲什麼要問? – McGarnagle

+0

@NewDTinStackoverflow:然後將您的界面更改爲「myGod」,而不是「ImyGod」。這很簡單。 – code4life