我是否需要在WCF DataContract中公开构造函数,以使其在客户端上的对象实例化期间工作?

Tus*_*r S 9 .net c# wcf serialization wcf-client

我有一个WCF服务类,让我们把它叫做一个.A是数据协定,其中包含另一个自定义对象B的集合作为其DataMembers之一.为了避免客户端的Null引用问题,我在构造函数中实例化BList,如下所示:

[DataContract]
public class A
{
    [DataMember]
    public String name { get; set; }
    [DataMember]
    public List<B> BList {get; set; }

    public A()
    {
        BList = new List<B>();  
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是在客户端上,在客户端上创建A的对象后,此实例化不会发生并且BList显示为null .我猜测构造函数没有出现在客户端上.那么,我是否需要使构造函数成为一个明确的操作契约?如果是这样会使客户看到他们不应该看到的内部事物,对吧?如何确保在客户端上发生此实例化?

谢谢,对不起,如果这看起来像一个愚蠢的问题.

A_N*_*lsi 2

我不确定是否有办法做到这一点,但通过从服务获取新实例,应该初始化列表,我建议以下方法

  • 编写一个返回类的新实例的 Web 方法,您可以按如下方式使用它,我确信您的列表已初始化

创建实例:

A a = new ServiceClient.CreateAInstance();
Run Code Online (Sandbox Code Playgroud)

在服务中编写方法,

[OperationContract]
public A CreateAInstance()
{
     return new A();
}
Run Code Online (Sandbox Code Playgroud)