在c#中,是否有可能将两个不同的类作为返回类型从一个层传递到另一个层?
本文关键字:返回类型 另一个 一个 是否 有可能 两个 | 更新日期: 2023-09-27 18:04:01
我的应用程序是n层架构。我有不同的层(业务逻辑&;数据链GUI)。我使用一些常见的类将数据从一个层传递到另一个层。我有一个类(比如RetrnValueCls
),它只有两个变量Return value
和Return Message
。当我将数据从一层传递到另一层时,我需要返回这个Return Value
类以及具有其他变量的其他类(例如MasterItemsCls
)。
方法如下
public MasterItemsCls GetMasterItemsMDL()
{
/* Does some computations and assign them to
attributes of MasterItemsCls and pass it other methods in other layers. */
}
public ReturnValueCls GetMasterItemsMDL()
{
/* Does some computations and assign them to
attributes of ReturnValueCls and pass it other methods in other layers. */
}
我想返回上述两个类(MasterItemsCls
&ReturnValueCls
)作为方法GetMasterItemsMDL
的返回类型,我也不想结合这两个类。如果有什么办法可以帮到我,请告诉我。
函数只能返回一个值,所以在这种意义上答案是否定的。
函数可以有out
参数,因此您可以通过out
参数返回两个值中的一个。
Tuple<T1,T2>
可用于此目的:
public Tuple<MasterItemsCls, ReturnValueCls> MyFunction()
{
// Do stuff
return new
Tuple<MasterItemsCls, ReturnValueCls>(myMasterItemsCls, myReturnValueCls);
}
Tuple<T1,T2>
的一个缺点是,访问这些值的方式是相当不直观的Item1
和Item2
。
如果你不想使用Tuple<T1,T2>
,很容易创建自己的类来包含MasterItemsCls
和ReturnValueCls
。
您不需要组合这两个类,但是一种可能且直接的方法是生成一个类,其中包含您试图返回的每个类的一个实例。
public class YouClassName
{
public MasterItemsCls MasterItemsCls {get; set;}
public ReturnValueCls ReturnValueCls {get; set;}
}
一个方法只能返回一个对象。您可以创建其他类,其中每个类都有实例
泛型可以作为返回元素的包装器。
你可以这样做:
public ReturnValueCls<MasterItemsCls> GetMasterItemsMDL()
{
}
您的ReturnValueCls<T>
需要返回类型的类型参数。因此,您的返回类型可以充当所需返回的包装器,并能够保存返回消息。
类定义的示例。可能需要一些约束:
public class ReturnValueCls<T>
{
public T Value { et; set;}
public string Message {get; set;}
}