c# – DataContract类中的WCF私有成员引用变为NULL
作者:互联网
我在Web服务层的WCF中存在一个问题.
当我在WCF中实例化我的类的私有成员(_Wagon)(此实例化不为null)时,几秒钟后,它变为null.
我一直在努力诊断问题,但目前还没有结果.
所以我转向你们,帮助我解决这个问题.
谢谢.
因此有我的代码:
[DataContract]
public class RemoteWagon
{
private readonly IWagon _Wagon;
public RemoteWagon(IWagon Wagon)
{
_Wagon = Wagon; //_Wagon isn't null here
}
~RemoteWagon()
{
Trace.WriteLine("Do nothing");
}
[DataMember]
public RemoteBreakpoint Breakpoint
{
set
{
if (value == null)
{
_Wagon.Breakpoint = null; //_Wagon member is NULL...
}
else
{
//... useless code in this context.
}
}
}
}
解决方法:
如果您的类已被DataContractSerializer序列化和反序列化(例如在客户端和服务器之间发送数据时),则会发生这种情况
一些参考:DataContractSerializer doesn’t call my constructor?
如果是这种情况,那么一个可行的解决方案对我有用:https://stackoverflow.com/a/9419943/724944
因此,快速检查并解决此问题(我假设您想自己初始化字段而不是序列化)将创建方法:
[OnDeserializing]
private void OnDeserializing(StreamingContext c)
{
_Wagon = initializeWagon();
}
但是,正如您可能已经注意到的那样,在反序列化过程中您将无法通过Wagon – 您必须以不同方式初始化它.
另一方面,如果您希望_Wagon序列化,则将其公开为public [DataMember]属性
标签:c,private,wcf,web-services,datacontract 来源: https://codeday.me/bug/20190630/1334330.html