によってオーバーライドすることができない私は、その後基底クラスの仮想メソッドを実装
public class BaseClass
{
public virtual bool StartUpdate(Interface)
{ some code here }
}
を定義する基本クラスを有する由来のインタフェース
public ClientClass : Interface {}
を実装するクラスを有しますクラス
public class DerivedClass : BaseClass
{
public override bool StartUpdate(ClientClass)
{ some code... }
}
コンパイラ(C#)はDerivedClassにエラーが発生し、適切でないことを示しますオーバーライドのメソッドが見つかりました。 私は間違ったやり方をしていますか?なぜコンパイラはを実装しているのですか?ClientClass
ご協力いただければ幸いです。
EDIT:
派生クラス
public override bool StartUpdate(object o)
{
// o will always implement Interface
}
It'sa混乱におけるベースクラス
public virtual bool StartUpdate(object o)
{
checkInterface(o); // if not o is Interface, throws an exception
more code...
}
において "溶液"
を発見したが、双方向のC#それが好きです。
あなたは、なぜ適切なメソッドのシグネチャで –
を実際のコードを提供してください具体的な 'ClientClass'が' interface'ではなくパラメータになる必要がありますか? – Tigran
@marcelo - そのような 'object'を使うのはなぜですか?あなたは特定のオブジェクト/インターフェースを持つすべての力を失いました....これはコンパイルされますが、確かに "C#が好きな"方法ではありません....あなたは以下の答えを見てきましたか? –