2

多くの異なるプロパティで構成される大きなオブジェクトがあります。このオブジェクトを 4 つの異なる関数で操作しています。各関数はオブジェクトを返します。ここに私のセットアップの非常に短いバージョンがあります:

public class myproject
{
    //many attributes
}

public myproject FunctionOne()
{
    //do some logic.
    //return myproject but only properties 4,5,6
}
public myproject FunctionTwo()
{
    //do some logic.
    //return myproject but only properties 1,2,3
}
public myproject FunctionThree()
{
    //do some logic.
    //return myproject but only properties 1,4,7
}
public myproject FunctionFour()
{
    //do some logic.
    //return myproject but only properties 3,2,5
}

問題は、オブジェクトを返すときに、その戻り値で特定のプロパティのみを利用できるようにしたいということです。その目的のために動的に作成されたカスタム オブジェクトを返すようなものです。

これを達成するために必要なオプションは何ですか?

4

3 に答える 3

2

REST を使用して JSON を返す場合は、次のようにすることもできます。

WebApi 呼び出し:

public HttpResponseMessage GetOne()
{
    return this.Request.CreateResponse(
        HttpStatusCode.OK,
        FunctionOne());
}
public HttpResponseMessage GetTwo()
{
    return this.Request.CreateResponse(
        HttpStatusCode.OK,
        FunctionTwo());
}

論理:

public dynamic FunctionOne()
{
    //do some logic.
    //return myproject but only properties 4,5,6
    return new {property4 = "abc", property5 = "xyz", property6 = "123"};
}
public dynamic FunctionTwo()
{
    //do some logic.
    //return myproject but only properties 1,2,3
    return new { property1 = "asdf", property2 = "123", property3 = "aaa" };
}
于 2013-04-11T19:44:01.267 に答える
1

このオブジェクトを使用するコードを制御できる場合は、言及した属性 (おそらくプロパティ?) を廃止し、それらをDictionary含む属性の名前/値のペアに置き換えることができます。

次に、コンストラクター時に必要な値を入力します。

于 2013-04-11T19:29:39.723 に答える
1

プロパティに Null 値がある場合、オブジェクトが Json にシリアル化されるときにスキップされます。したがって、考えられる解決策の 1 つは、null 許容プロパティを使用することです。

于 2013-04-11T19:35:40.483 に答える