0

我正在涉足 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”中定义的类型。

(更改名称并缩短路径以保护无辜者)

谢谢,

约翰

4

1 回答 1

1

当您为您的服务创建代理时,请尝试引用包含数据协定的程序集(如果使用“添加服务引用”,请转到高级选项,选择“在引用的程序集中重用类型”;如果使用 svcutil,请使用/r参数) . 这样,该工具将不会生成数据合同,您也不会遇到冲突。

于 2012-05-01T21:10:50.207 回答