如何保留DataMember的命名空间?

时间:2014-04-17 22:26:21

标签: c# wcf dynamics-crm

我有两个WCF服务,ServiceOneServiceTwo

ServiceOne中,我已经像这样定义了MyEntity

[DataContract]
public class MyEntity 
{

    ... // Other members of different types

    [DataMember]
    public Microsoft.Xrm.Sdk.EntityReference AccountId { ... } // Notice the namespace
}

ServiceTwo引用ServiceOne以及Microsoft.Xrm.Sdk,但当我尝试在ServiceTwo中执行以下操作时:

MyEntity myObject = new MyEntity
{
    AccountId = new Microsoft.Xrm.Sdk.EntityReference("account", someGuid),
};

我收到错误Cannot implicitly convert type 'Microsoft.Xrm.Sdk.EntityReference' to 'ServiceTwo.ServiceOneReference.EntityReference'

不幸的是,我无法定义自己的EntityReference子类,因为它是密封的。

有没有办法可以保留EntityReference的原始名称空间?我做错了什么?

1 个答案:

答案 0 :(得分:0)

在服务二中,您尝试创建的MyEntity对象的命名空间是什么?它可能是ServiceTwo.ServiceOneReference.MyEntity吗?

在我看来,您已经使用svcutil.ex来为服务二项目中的服务生成代理服务器。 Svcutil很可能会创建服务接口返回或使用的任何类的本地副本,但是名称空间全部基于服务中的一个引用。

所以希望你可以将AccountId属性设置为ServiceTwo.ServiceOneReference.EntityReference的新实例....如果你的服务中没有这样的东西,那么EntityReference类可能不是可序列化的。