我在我的应用程序中使用WCF服务。我的计划是设计服务合同如下:
[ServiceContract]
public interface IService
{
[OperationContract]
object ServiceCall(string typeName, string methodName, object[] methodParameters);
}
我将通过客户端的给定参数调用ServiceCall方法。
然后在服务器端我将创建方法信息并调用指定的方法并将响应返回给客户端。 通过这种方式,单个方法将解决我所有的远程cals。因为WCF中的已知类型问题我无法创建这样的service.return类型和方法参数object [] methodParameters不能是对象类型
我该如何解决这个问题?或者我可以做什么?
答案 0 :(得分:1)
定义明确的数据和服务合同的一些原因更可取,因为:
但是,如果您想要一个操作来统治它们,您可以尝试这样的事情:
[ServiceContract]
public interface IService
{
[OperationContract]
MyResponse ServiceCall(IMyRequest request);
}
你的IMyRequest会是这样的:
public interface IMyRequest{
string TypeName {get; set}
string MethodName {get; set;}
}
然后,您将使用每个调用所需的参数对象对其进行扩展,并使用KnownTypes对其进行修饰。你无法真正解决这个问题。由于WCF不允许您仅指定“对象”(并且它不应该因为双方都需要知道他们在谈论什么),因此您至少需要明确定义您的请求对象。可以使用单个OperationContract方法,但正如我上面提到的,我认为你最好使用显式操作。