すべての顧客の WSDL を解析し、操作などを何らかのマップ (またはマルチマップ) に格納するプログラムを作成することを検討してください。次に、マップを反復処理して重複を削除し、結果を別の最終的な WSDL に書き込み、この WSDL のコード生成を行います。ただし、名前空間で何かをする必要があります。
ただし、考慮すべき点: そのために必要なコードは、既に複製している追加のコード以上のものでしょうか?
もう 1 つのオプションは、複製された操作の Proxy クラスを定義することです。名前空間を使用して操作を追加して初期化する必要があります (名前空間文字列のマップを操作のマップに作成します。これは、実行するコード/オブジェクトにマップされた操作文字列になります)。次に、特定の操作を実行するたびに、操作対象の名前空間文字列を渡します。
名前空間 ns1、ns2、ns3 で Op1 を定義し、ns1 と ns2 で Op2 を定義したとします。次に、疑似コード (強く C++ に偏った) は次のようになります。
class ProxyOperations
{
addOperation(string opName, string namespace, OperationBase op);
// You'll have to figure out what to do with the operation parameters,
// maybe wrap them in a parameter context
void doOperation(string opName, string namespace) {
// lookup operation object and execute it
}
typedef map<string, OperationsBase> OperMap;
typedef map<string, operMap> NamespaceMap;
NamespaceMap namespaceOperationMap_;
};
{
ProxyOperations po;
// Populate it
po.addOperation("Op1", "ns1", oper1ObjectNs1);
po.addOperation("Op1", "ns2", oper1ObjectNs2);
po.addOperation("Op1", "ns3", oper1ObjectNs3);
po.addOperation("Op2", "ns1", oper2ObjectNs1);
po.addOperation("Op2", "ns2", oper2ObjectNs2);
// now use it
po.doOperation("Op1", "ns2");
}