それぞれ独自の名前空間を持つ 2 つのライブラリが提供されています。API の要求部分のクラス構造は同じですが、応答は異なります。
名前空間の種類に関係なく、両方の要求を処理できる関数を作成したいと考えています (ジェネリックを試してみましたが、解決策を作成できませんでした)。
これが私がやろうとしていることの例です:
public void Function1()
{
Namespace1.MyType type1 = new Namespace1.MyType1();
type1.InnerType = new Namespace1.MyType2();
type1.PerformMethod1();
}
public void Function2()
{
Namespace2.MyType type1 = new Namespace2.MyType1();
type1.InnerType = new Namespace2.MyType2();
type1.PerformMethod1();
}
次の方法で、メソッド レベルでジェネリックを使用しようとしました。
public void Function1<TType1, TType2>()
where TType1: NamesSpace1.Type1, NamesSpace2.Type1, new()
where TType2: Namespace1.Type2. Namespace2.Type2(), new()
{
TType1 type1 = new TType1();
type1.InnerType = new TType2();
type1.PerformMethod1();
}
ただし、.net では、ジェネリックに対するこのレベルの制約は許可されていません。ジェネリック関数を作成する方法についての提案は素晴らしいでしょう。
ありがとう