Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';这是一种传递回类实例组的干净方法,无需创建额外的';交易';上课?_C# - Fatal编程技术网

C# 什么';这是一种传递回类实例组的干净方法,无需创建额外的';交易';上课?

C# 什么';这是一种传递回类实例组的干净方法,无需创建额外的';交易';上课?,c#,C#,为了说明这一点,API中的每个方法都必须返回结果类的实例以及传回的任何其他对象 如果我有两个类,我想作为单个项目和列表传回: public class Foo { } public class Bar { } 这意味着我需要四个事务类才能传回: public class Result { } public class ApiFoo { public Result Result; public Foo Foo; } public class ApiFooList {

为了说明这一点,API中的每个方法都必须返回结果类的实例以及传回的任何其他对象

如果我有两个类,我想作为单个项目和列表传回:

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;
}
公共类结果
{
}
公共类ApiFoo
{
公共结果;
公共福福;
}
公营养蜂人
{
公共结果;
公开名单愚人;
}
公共级ApiBar
{
公共结果;
公共酒吧;
}
公共类ApiBarList
{
公共结果;
公开名单;
}
我相信一定有比这更好的方法传回正确的收藏

有谁能建议一个更好的方法吗


谢谢。

当我读到这个问题时,我会承认,我不是很自信,泛型可能会有所帮助。您可以创建一个可以封装所有类型的类,如:

class ResultWrapper<T>
{
    public Result Result;
    public T Value;
}

泛型本身也是在C#中开发时的一个重要主题,它被广泛使用。更多信息,请参阅。

在阅读时考虑这个问题,我承认这不是很自信,泛型可能会有所帮助。您可以创建一个可以封装所有类型的类,如:

class ResultWrapper<T>
{
    public Result Result;
    public T Value;
}

泛型本身也是在C#中开发时的一个重要主题,它被广泛使用。有关更多信息,请参阅。

您应该为此使用
通用功能。您可以执行以下操作:

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>>();
公共类SR
{
公共T结果{get;set;}
公共T GetResult()
{
返回结果;
}
}
var结果=新SR();或var结果=新SR();

您应该为此使用
通用
功能。您可以执行以下操作:

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>>();
公共类SR
{
公共T结果{get;set;}
公共T GetResult()
{
返回结果;
}
}
var结果=新SR();或var结果=新SR();

你说的“事务类”是什么意思?您的目标是哪个框架/库?问题中没有说明如何重新安排代码以使其更好。问题(IMO)不清楚。你说的“事务类”是什么意思?您的目标是哪个框架/库?问题中没有说明如何重新安排代码以使其更好。问题(国际海事组织)不清楚。谢谢。是的,你的解释是正确的。intellisense是否会明确地指示正在传递的内容?@user2078938 intellisense对此有很大的支持,但我觉得这有点XY问题。我不知道这个解决方案试图解决的根本问题是什么,但这个解决方案感觉有点笨拙。谢谢。是的,你的解释是正确的。intellisense会给出一个清晰的指示,说明返回的是什么吗?@user2078938 intellisense非常支持它,但我觉得这有点像XY问题。我不知道这个解决方案试图解决的根本问题是什么,但这个解决方案感觉有点笨拙。
class Result<T>
{
    // Existing Result members.
    public T Value;
}
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>>();