[c#] 在接口中聲明的覆蓋方法實現


1 Answers

你可以從MyClass派生

public class MyNewClass : MyClass
{
    public new void OnItemClicked(){ /*...*/ } //NEW keyword
}

唯一的一點,請注意,這樣你就不會支持多態。

更清楚的是:

     MyClass cl = new MyNewClass(); 
     cl. MyMethod();

這將調用MyClass方法,即使真實的對像類型是MyNewType 。 為了能夠調用我們想要的,我們必須明確地定義類型

     MyNewClass cl = new MyNewClass(); 
     cl. MyMethod(); //WILL CALL METHOD WE WANT
Question

我有一個接口,其中有幾個方法。

interface IMyInterface
{
    //...
    void OnItemClicked()
    //...
}

和一個實現

class MyClass : IMyInterface
{
    //Other methods
    public void OnItemClicked(){ /*...*/ } 
}

現在,我想有一個類似MyClass除了OnItemClicked() ,我想對這個方法進行一些修改。

我想繼承覆蓋,但我不想改變MyClass (如:公共virtual無效OnItemClicked()...),因為它不是我的實現,

我不想再次實現IMyInterface,因為OnItemClicked()是MyClass的唯一修改部分。

我有其他方法可以做到嗎?






Related