C# 如何保留DataMember的命名空间?

C# 如何保留DataMember的命名空间?,c#,wcf,dynamics-crm,C#,Wcf,Dynamics Crm,我有两个WCF服务,服务一和服务二 在ServiceOne中,我对MyEntity的定义如下: [DataContract] public class MyEntity { ... // Other members of different types [DataMember] public Microsoft.Xrm.Sdk.EntityReference AccountId { ... } // Notice the namespace } ServiceTw

我有两个WCF服务,服务一和服务二

在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中执行以下操作时:

我发现错误,无法将类型“Microsoft.Xrm.Sdk.EntityReference”隐式转换为“ServiceTwo.ServiceOneReference.EntityReference”

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


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

在服务2中,您试图创建的MyEntity对象的名称空间是什么?可能是ServiceTwo.ServiceOneReference.MyEntity,对吗

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

因此,希望您可以将AccountId属性设置为ServiceTwo.ServiceOnReference.EntityReference的新实例。。。。如果您的ServiceTwo项目中没有这样的东西,EntityReference类可能无法序列化

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