2014-01-26 4 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 참조 예외가 있는데 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

관련 문제