0

インターフェイスをiClass定義しました。インターフェイスの 1 つのメソッドは、別のインターフェイス をiObject引数として受け取ります。

の特定の実装では、iClassの特定の実装を取得するメソッドが必要ですが、C# はメソッドをそのまま実装する必要があることを示しています。iObjectObjectImplementation

どうしてこれなの?ObjectImplementationのインスタンスではありませんiObjectか? どうすればこれを回避できますか? 代わりに抽象クラスを使用してみましたが、同じ混乱に陥りました。

public interface iClass {
    bool SomeMethod(iObject object);
}

public interface iObject {
    ... // some methods here
}

public ObjectImplementation : iObject {
    ... // some method implementations here
}

public ClassImplementation : iClass {
    public bool SomeMethod(ObjectImplementation object) // <- C# compiler yells at me
    {

    }
}
4

2 に答える 2

0

パラメータとしてiObjectを残すことは道のりですが、これもうまくいくはずです:

public interface iClass {
    bool SomeMethod(iObject obj);
}

public interface iObject {
}

public class ObjectImplementation : iObject {
}

public class ClassImplementation : iClass {
    public bool SomeMethod(iObject obj)
    {
        return false;
    }
}
于 2013-05-14T07:31:32.563 に答える