2012-02-22 6 views
0

私はWCFサービスを構築しています。 ListViewItemや既に定義済みのクラスオブジェクトなどの型を持つクラスのコードを生成しないプロキシに関する問題があります。クラスプロパティの種類に関するWCF

以下の2つの例は、私が渡そうとしているクラスです。第二の例では

例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

[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がこれを自動的に処理するかどうかはわかりませんでした。この上の任意の他のヘルプがまだ評価されて

EDIT。

また、私はInvoiceChargesクラスに以下を追加しようとしましたが、依然としてプロキシが正しく生成されるのを見ることができませんでした。

[KnownType(typeof(ListViewItem))] 

また、これはプロキシの動作です。私はこれを行うためにサービス参照の追加を使用しています。

enter image description here

それはそのすべてのためにそれのListViewItemのいくつかの "InvoiceCharges" を生成する方法を参照してください。私はそれとその罰金のDataMember属性を削除することができます。

+0

DivisionsクラスにもDataContract属性がありますか? –

+0

はい、奇妙なのは、問題のあるカスタムオブジェクト(ListViewItemプロパティとDivisionプロパティなど)から[DataMember]属性を削除したときです。クラスは、クライアント側でプロキシを正常に生成します。 – meanbunny

+0

私は、ListViewItemがDataContract属性でマークされていないと推測しています。そのため、そこに問題がある可能性があります。コードを投稿していないのでDivisionsクラスではわかりません。 –

答えて

0

ListViewItemはUIコンセプトであり、ビジネスやサービスコードには何の目的もありません。ユーザーが見てクラスを修復するのではなく、 "データ"(モデル)を再考してください。

問題は、シリアル化できないことを扱います。よりシリアライズしやすくするためにUIビットを書き換えたい場合を除き、モデルを再考することが最善の策です。