-1

些細なことに聞こえるかもしれませんが、IMyIntercace を期待する関数に A 変数を渡すと、b フィールドを返すことは何とか可能ですか? 次に、クラス A に Hello() 関数を実装する必要はありません。代わりに、b を IMyInterface として返すだけです。

interface IMyInterface
{
    void Hello();
}
class A : IMyInterface
{
    B b = new B();
}
class B : IMyInterface
{
    public void Hello()
    {
        Console.WriteLine("Hello");
    }
}
class Program
{
    static void foo(IMyInterface myInterface)
    {
        myInterface.Hello();
    }
    static void Main(string[] args)
    {
        A someVariable = new A();
        foo(someVariable);
    }
}

できないと思うのですが、できる設計パターンやコツはありますか?

編集

A を導出したくない理由は、おそらくこれを実行したいからです

class A : IMyInterface
{
    B b = new B();
    B b2 = new B();
    IMyInterface bPointer;
}

次に、状況に応じてbの1つを指すことができます

4

4 に答える 4