Wcf 在客户端未初始化的DataContract类

Wcf 在客户端未初始化的DataContract类,wcf,datacontract,Wcf,Datacontract,我想从我的WCF(C)服务向我的客户(WPF)发送以下类: 服务使用它的方式如下: var channel = OperationContext.Current.GetCallbackChannel<IClientCallback>(); channel.OutputAvailable(new OutputAvailableEventArgs(1, false, "some message")); var channel=OperationContext.Current.GetC

我想从我的
WCF
C
)服务向我的客户(
WPF
)发送以下类:

服务使用它的方式如下:

var channel = OperationContext.Current.GetCallbackChannel<IClientCallback>();

channel.OutputAvailable(new OutputAvailableEventArgs(1, false, "some message"));
var channel=OperationContext.Current.GetCallbackChannel();
channel.OutputAvailable(新的OutputAvailableEventArgs(1,false,“某些消息”);
在客户端,成员获得其默认值。
我试着用
IsRequired
属性标记它们,但是现在没有调用客户端的
OutputAvailable
。服务端的代码似乎运行顺利(我没有注意到调试器有任何问题)

如何使用
WCF
传输
DataContract
类,同时维护成员的值?

(我看到了建议使用
OnSerialized
OnSerialized
的解决方案,但我不需要一个默认构造函数。)

我看到了许多不同的解决方案。为了其他人的缘故,我会写下他们中的一些人+对我有用的东西:

  • 在某些情况下,指定项目的顺序似乎可以解决问题。有关详细信息,请参阅
  • 如果您正在进行某个默认初始化,则可以使用
    OnSerialized
    OnSerialized
    方法调用初始化方法
  • 我还尝试在我的
    DataMember
    s上使用
    IsRequired
    属性,但仍然没有获取我的对象

  • 对我有效的是
    DataContract
    属性。显然,为了使契约被认为是平等的,必须将DataContract上的Namespace属性设置为双方相同的值

    若可能,使用fiddler查看服务返回的内容以及客户端在消息中接收到的内容。
    var channel = OperationContext.Current.GetCallbackChannel<IClientCallback>();
    
    channel.OutputAvailable(new OutputAvailableEventArgs(1, false, "some message"));