我正在涉足 WCF,并尝试制作一个简单的测试项目,该项目既可以将服务用作服务,也可以直接实例化它的类并使用它们。
我有一个早期的工作版本,其中传递的数据只是基元类型。 但是,当我尝试转换为使用数据协定时,我在引用协定的代理声明版本还是项目本身的版本方面遇到冲突。
问题:是否可以执行此操作,如果是,我将如何解析数据协定引用?
private void Test()
{
MyService fssDirect = new MyService(); // direct instantiation
MyServiceClient fssService = new MyServiceClient(); // Service proxy
ClientCredentialsContract Client = new ClientCredentialsContract();
ResponseDataContract Result = new ResponseDataContract();
if (CallAsService)
{
Result = fssService.Create(Client, Request);
}
else
{
Result = fssDirect.Create(Client, Request);
}
}
在上面,任何对 RequestDataContract 和 ClientCredentialsContract 类型的引用都指示
警告:"C:...\Test\MyServiceProxy.cs"中的类型"MyContracts.RequestDataContract"与"C:...\MyService\bin\Debug\Contracts.dll"中导入的类型"MyContracts.RequestDataContract"冲突。 使用在"C:...\Test\MyServiceProxy.cs"中定义的类型。
(更改姓名并缩短路径以保护无辜者(
谢谢
John
为服务创建代理时,请尝试引用包含数据协定的程序集(如果使用"添加服务引用",请转到高级选项,选择"在引用的程序集中重用类型";如果使用 svcutil,请使用 /r
参数(。这样,该工具就不会生成数据协定,也不会发生冲突。