2014-01-26 3 views
0

Я пытаюсь использовать класс в службе WCF. Когда им созывающиеhowto инициализирует класс 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

У вас есть Null Reference Exception, я не думаю, что проблема связана с WCF. На какой линии вы получаете исключение? – Maxim

+0

На u.attributeChanges.Add (a); – Borderman

ответ

0

Вы используете сгенерированный код клиента. Проблема заключается в том, что клиент создает этот код на основе WSDL xlm. Код в CTOR не создается в клиенте, потому что клиент не может знать этот код.

У вас есть несколько вариантов:
1. Используйте общую DLL с контрактом данных, а не создавайте его через веб-ссылку.
2. Реализуйте его самостоятельно в «частичном» классе.

+0

Как бы выглядел такой частичный класс? – Borderman

+0

Здесь вы можете увидеть пример - http://msdn.microsoft.com/en-us/library/wa80x488.aspx Идея частичных классов - позволить вам писать код в сгенерированный класс. Если я правильно помню, сгенерированный класс уже «частично», просто добавьте частичный класс с тем же именем в вашу реализацию CTOR. – Maxim

Смежные вопросы