1 つのインターフェイスInterfaceBase
と、そこから派生したいくつかのインターフェイスがありますInterface1, Interface2
。次に、基本インターフェイスではなく、インターフェイスを実装するクラスがありInterfaceX
ます。
今、私はジェネリックの初心者であり、これの非常に多くの新しいアプローチが私の頭の中で大きな混乱を引き起こしました:( 。私は次のようなものを呼び出すファクトリ(静的クラス)を作成したい
Interface1 concrete1 = Factory.Get<Interface1>();
これが機能しない私の(サンプル)実装です:
public static class Factory {
public static T Get<T>() where T: InterfaceBase{
Type type = typeof(T);
//return new Concrete1() as T; // type T cannot be used with the as
//return new Concrete1() as type; //type not found
//return new Concrete1(); // cannot implicitly convert
//return new Concrete1() as InterfaceBase; //cannot convert IBase to T
//return new Concrete1() as Interface1; //cannot convert Interface1 to T
}
}
私が達成したいのは、アプリケーションの残りの部分からクラス (Web サービス ハンドラー) を非表示にして、軽く交換することです。クラスはシングルトンになり、ファクトリ内のディクショナリに格納されるため、ファクトリを使用したかったので、ファクトリはこのメソッドを介してアプリケーション全体にそれらを広げることができますが、インターフェイスとして..多分私は制約を正しく使用していません何か間違ったことをしていますか?私のアプローチは悪いですか?より良いものはありますか? アーキテクチャ全体を作り直す必要があるのでしょうか? アーキテクチャをよりよく示す図。工場はその中にありません