2

我有一个由许多不同属性组成的大对象。我正在用四个不同的功能操作这个对象。每个函数都返回对象。这是我的设置的一个非常简短的版本:

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 时将跳过该属性。因此,一种可能的解决方案是使用可为空的属性。

于 2013-04-11T19:35:40.483 回答