2014-01-26 48 views
0

我試圖在WCF服務中使用一個類。當IM調用如何初始化一個wcf類

u.attributeChanges.Add(a); 

我得到:

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

如果創建它的工作的客戶端應用程序的類。

UpdateChanges類

[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); 

Anyonw知道如何解決這個問題?

+0

你有一個空引用異常,我不認爲這個問題與WCF有關。你會在哪一行發生異常? – Maxim

+0

On u.attributeChanges.Add(a); – Borderman

回答

0

您正在使用生成的客戶端代碼。 問題是客戶端基於WSDL xlm生成此代碼。 CTOR中的代碼不會在客戶端中生成,因爲客戶端無法識別此代碼。

你有幾個選擇- 1.使用共享DLL與數據約定,而不是通過Web引用生成它。
2.自己在「部分」類中實現它。

+0

這樣的部分班怎麼樣? – Borderman

+0

您可以在這裏看到示例 - http://msdn.microsoft.com/en-us/library/wa80x488.aspx部分類的想法是讓您將代碼寫入生成的類。如果我沒有記錯,生成的類已經是'partial',所以只需在CTOR實現中添加一個名稱相同的分類。 – Maxim