我可以从同一类引用数据合同及其代理版本吗?



我正在涉足 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 参数(。这样,该工具就不会生成数据协定,也不会发生冲突。

最新更新