私は設計上の質問があります。私は私のプロジェクトのインターフェイス次ている -逆互換のためのインターフェイスの操作
interface ITest
{
void SayHello();
}
を、それが各クライアントで、このクラスによって実装される -
class TestImpl : ITest
{
public void SayHello()
{
Console.WriteLine("Hello!");
Console.ReadLine();
}
}
今、このインターフェイスはかなりの時間のために使用されてきた、がたくさんありますこのコードを使用するクライアント。
class LibraryClass
{
private ITest test;
public void initialize(ITest t)
{
test = t;
}
public void Call()
{
test.SayHello();
LibraryClass2 l2 = new LibraryClass2();
l2.SayHelloAgain(test);
}
}
class LibraryClass2
{
public void SayHelloAgain(ITest test)
{
test.SayHello();
}
}
class Client
{
private ITest test;
public void Client2Method()
{
LibraryClass l = new LibraryClass();
l.initialize(new TestImpl1);
l.Call();
}
}
ここで、SayHelloの書き方を変更したいと思います。私は関数の引数として名前を渡すと、ユーザーの応答を返す、それは次のようになります -
string SayHello(string name);
私は図書館で提供されるAPIを変更する必要はありません。コードを下位互換性に保ち、新しいコールをサポートするために、これをどうやって行うことができますか?
EDIT:私が直面している実際の問題を反映するコードを修正しました。
おかげ
インターフェイスのコードを制御する場合は、単にメソッド文字列SayHello(文字列名)を追加します。 ITestに – user469104
いいえ、私はいません。各クライアントにはインターフェイス – Fox
の独自の実装がありますが、 –