2012-02-22 3 views
0

좋아, 그래서 내 WCF 서비스를 구축하고 있습니다. ListViewItem과 같은 유형의 클래스 또는 이미 정의한 클래스 객체에 대한 코드를 생성하지 않는 프록시에 문제가 있습니다.클래스 속성 유형에 관한 WCF

다음 두 가지 예는 내가 전달하려고하는 클래스입니다.

예 # 1

[DataContract] 
public class InvoiceCharges { 
    #region Property... 
    private int _invoiceChargeID; 
    private ListViewItem _listViewItem; 

    [DataMember] 
    public int InvoiceChargeID { 
     get { return _invoiceChargeID; } 
     set { _invoiceChargeID = value; } 
    } 
    [DataMember] 
    public ListViewItem ListViewItem { 
     get { return _listViewItem; } 
     set { _listViewItem = value; } 
    } 
    #endregion 

2 예 그냥 이미보고 나의 부문 클래스를 통과하는 힘든 시간을 가지고 왜 혼란 스러워요에서 예 # 2

[DataContract] 
public class Users { 
    #region Properties... 
    private int _userID; 
    private Divisions _Division = new Divisions(); 

    [DataMember] 
    public int UserID { 
     get { return _userID; } 
     set { _userID = value; } 
    } 
    [DataMember] 
    public Divisions Division { 
     get { return _Division; } 
     set { _Division = value; } 
    } 

. 확실히 WCF는 자신 만의 객체를 전달할 수 있습니까 ?? 어떤 도움이라도 대단히 감사합니다. 다른 플랫폼에서 자신의 커스텀 객체를 직렬화하기 위해서는 클래스에 특별한 것을해야한다는 것을 알고 있습니다. WCF가 자동으로 처리하는지 여부는 확실하지 않았습니다. 이것에 다른 도움이 여전히 감사

편집 할 수 있습니다.

또한 InvoiceCharges 클래스에 다음을 추가했지만 프록시가 제대로 생성되는지 확인할 수 없었습니다.

[KnownType(typeof(ListViewItem))] 

또한 프록시의 동작입니다. 이 작업을 수행하려면 서비스 참조 추가를 사용하고 있습니다. 그것의 모든 때문에 그 ListViewItem이 여러 "InvoiceCharges"를 생성하는 방법을

enter image description here

을 참조하십시오. DataMember 특성을 제거 할 수 있습니다.

+0

Divisions 클래스에도 DataContract 특성이 있습니까? –

+0

예, 이상한 점은 문제가있는 사용자 지정 개체 (예 : ListViewItem 속성과 Division 속성)에서 [DataMember] 특성을 제거 할 때입니다. 이 클래스는 클라이언트 측에서 성공적으로 프록시를 생성합니다. – meanbunny

+0

글쎄, ListViewItem이 DataContract 특성으로 표시되어 있지 않아서 문제가 될 수 있습니다. 코드를 게시하지 않았으므로 Divisions 클래스에서 잘 모르겠습니다. –

답변

0

ListViewItem은 UI 개념이며 비즈니스 또는 서비스 코드에서 용도가 없습니다. "데이터"(모델)를 다시 생각해보고 사용자가 보는 것을 방해하지 말고 다시 수정하십시오.

문제는 직렬화 할 수 없음을 다룹니다. UI 비트를 다시 직렬화하기 쉽도록 다시 작성하지 않는 한, 모델을 다시 생각해 보는 것이 가장 좋습니다.