些細なことに聞こえるかもしれませんが、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つを指すことができます