2011-07-13 44 views
1

我可以在c#中的接口添加一個動態方法嗎?我可以添加一個動態方法到c#中的接口嗎?

因此,接口方法不存在,但存在於基礎類,我想通過接口調用它。

謝謝

+1

簡單的答案否..爲什麼你想這樣做? – Chandu

+1

不,你不能那樣做,因爲如果接口方法不存在,那接口怎麼會這樣呢?它不知道。你可以做的最接近的事情是將接口方法轉換爲基礎類的對象,但是,這樣做會讓你失去多態能力。我對你的建議是重新思考你想要做什麼。 – Icemanind

回答

3

那種破壞界面的觀點。如果你想在某些類中使用它,而不是其他類,那麼你可以這樣實現它,但是你必須首先將它轉換爲已知的類類型。

你也許可以使用一些反思下鋪設類類型檢查有你想,如果你想成爲真正挑剔它來調用(避免明知型投)

0

嘗試製作方法實現原接口看作是一種類之間的「中間人」和底層接口

public interface IFoo 
{ 
    string PropA { get; set; } 
} 

public interface IFooExtended 
{ 
    void MyMethod(); 
} 

public class ConcreteFoo : IFooExtended 
{ 
    // implementation... 
} 

它一個新的接口不是「動態」,但是這可能會有幫助。

0

否 - 您可以在接口上添加擴展方法以實現類似的目標。

0

我認爲正確的做法是儘可能接近你想要實現的是創建一個新的繼承舊的接口。

喜歡的東西:

interface IMyInterface : IExistingInterface 
{ 
    void MyCustomMethod(); 
} 

你會解決你的代碼的新界面。實現它的類將擁有新的方法以及繼承接口的方法。

你不能改變現有的接口,這將失去接口本身的目的。

0

如果你問,如果你想使用動態接口(例如,強類型的鴨打字像在Visual Basic),然後沒有,C#本身並不支持這一點。但你可以看看代碼項目文章Dynamic interfaces in any .NET language

相關問題