2010-12-15 13 views
0
に転送プロパティの量を制限する方法

私のWebメソッドは、プロパティをたくさん持っているオブジェクトのユーザー 'を返します:などのID、ニック、電子メール、姓、SecondNameを、...ASP.NET AJAX:クライアント

[WebMethod] 
public User GetUserById(int userId) 
{ 
    vfm_elita.elita_table.user.User user = 
     vfm_elita.elita_table.user.User.GetUserById(userId); 
    return user; 
} 

返されるプロパティの量を制限する可能性はありますか?または、必要なプロパティだけを持つ別のクラス(UserForClientForParticular)を作成する必要がありますか?

ありがとうございました。

P.S.推測、私の最後のアイデアは、提案された答え:)とにかく、任意の思考は歓迎です

答えて

1

データ転送オブジェクトを使用することをお勧めします。これは、クライアント側が知っておくべきプロパティのみを公開することを特化しています。あなたは急いで、試作している、または他のいくつかの理由のためにDTOクラスを作成したくない場合は別の方法として、あなたは応答をダウン削り取っする匿名型を使用することができます。

[WebMethod] 
public object GetUserById(int userId) 
{ 
    vfm_elita.elita_table.user.User user = 
    vfm_elita.elita_table.user.User.GetUserById(userId); 

    // Will return something like {"Nick":"Encosia","FirstName":"Dave"} 
    return new { Nick = user.Nick, FirstName = user.FirstName }; 
} 
+0

使用を許可されています匿名の型を返し、 "オブジェクト"を返します。それは良いアイデアです。ありがとう。 – Budda

1

あなたはいつもあなたがあなたのAPIにどのようなデータを公開するか、特にそれらが消費される内部的にしか使用されていない場合でも、私は間違いなく、あなたの記事で言及したことをお勧めし、この文脈で必要なデータだけを公開するように設計された構造を作成します。

更新:あるオブジェクト(User)から別のオブジェクト(UserSummary)へのプロパティ値のマッピングを自動的に処理するcodeplexのAutoMapperプロジェクトを見てみることをおすすめします。