如果我有接口的其他兩個接口:在接口解決歧義延伸其具有相同名稱的方法
public interface ANewThing { IKey Key { get; } }
public interface AnOldThing { object Key{ get; } }
public interface ACompositeThing : ANewThing , AnOldThing { }
,我這樣寫:
ACompositeThing compositeThing = GetCompositeThing();
Trace.WriteLine(compositeThing.Key);
它不會編譯,抱怨Key
的呼叫不明確(如果Key
屬性返回的類型相同,則不會產生任何影響)。我知道,在實施ACompositeThing
課堂上,我可以明確地實現的接口ANewThing
和AnOldThing
,但這並不能幫助我,當我不知道具體實現,只知道他們將給予ACompositeThing
方法。
所以我的問題是:
我可以做任何事情,在ACompositeThing
接口說Key
財產歧義應如何解決?
就像說'通過這個接口訪問Key
屬性時,總是返回ANewThing
實現Key
屬性'?
或者我必須接受我無法做到這一點,並且在我進行訪問之前,必須始終將我的ACompositeThing
投射到其他接口之一?
什麼'GetCompositeThing'返回的實現看起來像什麼? – AakashM 2012-02-15 11:39:54
但是實現'ACompositeThing'的類在哪裏? – vulkanino 2012-02-15 11:44:57
@AakashM @vukanino在這種情況下實現是無關緊要的,我想知道當我只有一個接口時,我是如何處理這個問題的。假設有些第三方提供了'ACompositeThing'的所有實現,並且我有一個只處理'ACompositeThing'接口的庫,並且具體的實現總是傳遞給庫,所以它不知道關於它們的任何信息。 – 2012-02-15 11:59:05