問題: リフレクションを介してメソッドを呼び出し、結果を送信する WCF サービスがあります。そのようです:
[OperationContract]
Object InvokeMemberByReflection(string typeName, string name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args);
これを行うのは、呼び出したい既存の API X があるためです。すべてのメソッドのラッパーを書きたくありません。
サーバーとクライアントの両方が同じ dll セットを参照するため、明示的な DataContract も使用しません。
ただし、上記の InvokeMemberByReflection メソッドの場合、メソッド パラメーターを型オブジェクトの配列として送信しているため、DataContractSerializer が機能するには、API X のすべての可能なメソッド シグネチャを KnownTypeAttributes として追加する必要があるようです。
これに対する回避策はありますか?CLR は基本的に、オブジェクト配列に含まれる要素の型を認識しています。これに基づいてシリアライズ/デシリアライズすることはできませんか(すべて一緒に異なるタイプであることを認めます)?
また、このような問題に対処するための他のパターンをいただければ幸いです。反射は明らかな理由で遅すぎます。