如何初始化wcf类

时间:2014-01-26 12:50:04

标签: wcf class initialization

我试图在WCF服务中使用Class。当我打电话给

u.attributeChanges.Add(a);

我得到:

"Object reference not set to an instance of an object"

如果在客户端应用程序中创建类,则它正在运行。

UpdateChanges Class

[DataContract]
public class UpdateChanges
{

    private void Initialize()
    {

        this.attributeChanges = new List<AttributeChanges>();

    }

    public UpdateChanges()
    {
        this.Initialize();
    }

    [DataMember]
    public string objectGuid { get; set; }

    [DataMember]
    public Utilities.ObjectTypes objectType { get; set; }

    [DataMember]
    public  Utilities.ChangeType changeType{ get; set; }

    [DataMember]
    public List<AttributeChanges> attributeChanges { get; set; }


    [OnDeserializing]
    public void OnDeserializing(StreamingContext ctx)
    {

        this.Initialize();

    }


}

AttributeChanges类

[DataContract]
public class AttributeChanges
{
    [DataMember]
    public string attributeName { get; set; }
    [DataMember]
    public string attributeValue { get; set; }
}

客户代码:

Service.DirsyncServiceClient proxyClient;
proxyClient = Utilities.GetProxy("http://192.168.1.45/vDir/Service.svc");

Service.UpdateChanges u = new Service.UpdateChanges();
Service.AttributeChanges a = new Service.AttributeChanges();
a.attributeName = "Attribute1";
a.attributeValue = "Value1";
u.attributeChanges.Add(a);

proxyClient.SaveObject(u);

无论如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您正在使用生成的客户端代码。 问题是客户端在WSDL xlm的基础上生成此代码。 CTOR中的代码不会在客户端生成,因为客户端无法识别此代码。

您有几个选择 -
 1.将共享DLL与数据协定一起使用,而不是通过Web引用生成它。
 2.在“部分”课程中自己实施。