私は以下のクラスとインターフェイスを持っています。基本的にIOldインターフェイス(これは廃止予定)をフリーズし、ユーザーにIOldと同じメソッドを含むINewインターフェイスを使用させたいと考えています。しかし、INewメソッドMeth3はIOld Meth2と同じ機能を表しますが、戻り値のタイプが異なります。これらをよりよく区別するために、このデザインは適切であると考えました。私の質問は、これは良いコーディング方法と考えられますか?派生クラスのインターフェイスメソッドを実装する抽象基本クラス
注:IOldとINewは、別々のアセンブリに存在します。 NewClassは、クライアントがINewインターフェイス経由で接続するリモート(MarshalByRef)オブジェクトとして公開されるため、どのような方法でもIOldを参照することはできません。新しいクライアントがIOldアセンブリを参照しないようにしたい。
public interface IOld
{
void Meth1();
double Meth2(int input);
}
public interface INew
{
void Meth1();
float Meth3(int input);
}
public abstract class BaseClass
{
public virtual void Meth1()
{
}
public virtual double Meth2(int input)
{
throw new NotImplementedException();
}
}
public class OldClass
:
BaseClass,
IOld
{
public override double Meth2(int input)
{
return 0;
}
}
public class NewClass
:
BaseClass,
INew
{
public float Meth3(int input)
{
return 0;
}
}
+1は - だけでなく少し編集の自由を取った - SOZ !! :-) –
ありがとうございました。はい、私は非推奨としてインターフェイスをマークするが、基本的なデザインを指摘したいと思った。私が作ったはずの点は、NewClassはリモートオブジェクトとして公開され、INewインターフェイス経由でそれを受け取ったクライアントがIOldアセンブリを取得できないため、どのような方法でもIOldを参照できないことです。私はそれに応じて私の質問を更新しました。 – Jeb