我的应用程序具有n层体系结构。我有不同的层(业务逻辑和数据链接和GUI)。我正在使用一些通用类将数据从一层传递到另一层。我有一个只有两个变量RetrnValueClsReturn 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. */
}


我想立即返回上述两个类(MasterItemsClsReturnValueCls)作为方法GetMasterItemsMDL的返回类型,而且我也不想合并两个类。请让我知道我是否有办法。

最佳答案

函数只能返回一个值,因此从这个意义上讲,答案是否定的。

函数可以具有out参数,因此您可以通过out参数返回两个值之一。

在我看来,处理此问题的最干净方法是使用第三类来包含其他两个类。 Tuple<T1,T2>可用于此目的:

public Tuple<MasterItemsCls, ReturnValueCls> MyFunction()
{
    // Do stuff
    return new
    Tuple<MasterItemsCls, ReturnValueCls>(myMasterItemsCls, myReturnValueCls);
}


Tuple<T1,T2>的一个缺点是,这些值以不太直观的Item1Item2的形式访问。

如果您不想使用Tuple<T1,T2>,则可以轻松创建自己的类以包含MasterItemsClsReturnValueCls。那是我的首选方法。

10-07 21:39