问题:我有一个 WCF 服务,它通过反射调用方法并发送结果。像这样:
[OperationContract]
Object InvokeMemberByReflection(string typeName, string name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args);
我这样做是因为我有一个想要调用的现有 API X。我不想为所有方法编写包装器。
我也不使用显式 DataContracts,因为服务器和客户端都引用同一组 dll。
但是,对于上面的 InvokeMemberByReflection 方法,由于我将方法参数作为类型对象的数组发送,看起来我必须将 API X 的所有可能的方法签名添加为 KnownTypeAttributes 才能使 DataContractSerializer 工作。
有解决办法吗?CLR 基本上知道对象数组中包含的元素的类型。它不能基于此进行序列化/反序列化(假设它是不同的类型)?
我也很欣赏解决此类问题的任何其他模式。由于显而易见的原因,反射太慢了。