为了解释,API中的每个方法都必须返回Result类的实例以及传回的任何其他对象。
如果我有两个课程,我想作为单个项目和列表传回:
public class Foo
{
}
public class Bar
{
}
这意味着我需要传回四个交易类:
public class Result
{
}
public class ApiFoo
{
public Result Result;
public Foo Foo;
}
public class ApiFooList
{
public Result Result;
public List<Foo> FooList;
}
public class ApiBar
{
public Result Result;
public Bar Bar;
}
public class ApiBarList
{
public Result Result;
public List<Bar> BarList;
}
我确信必须有更好的方法来传回正确的收藏品。
任何人都可以提出更好的建议吗?
感谢。
答案 0 :(得分:4)
在我阅读时提出这个问题,我承认,这并没有太多的信心,仿制药可能有所帮助。您可以创建一个可以封装所有类型的类,例如:
class ResultWrapper<T>
{
public Result Result;
public T Value;
}
然后你可以:
return new ResultWrapper<Foo>();
return new ResultWrapper<Bar>();
或者:
return new ResultWrapper<List<Foo>>();
return new ResultWrapper<IEnumerable<Bar>>();
或者,如果您需要从不同的视点区分列表和单个项目,可以添加:
class ResultListWrapper<T>
{
public Result Result;
public List<T> Values;
}
return new ResultListWrapper<Foo>();
更进一步,你还没有充实Result
课程,但你可以随时将泛型应用于该课程:
class Result<T>
{
// Existing Result members.
public T Value;
}
泛型本身也是使用C#进行开发时的一个重要主题,它被广泛使用。有关详细信息,请参阅MSDN documentation。
答案 1 :(得分:1)
您应该使用Generic
功能。您可以执行以下操作:
public class SR<T>
{
public T Result { get; set; }
public T GetResult()
{
return Result;
}
}
var result = new SR<Bar>(); or var result = new SR<List<Bar>>();