返回不同的数据类型C#

时间:2012-11-22 22:57:25

标签: c# .net object return-type

我创建了一个包含许多不同方法的类库(DLL)。并返回不同类型的数据(string string [] double double [])。因此我为包含不同数据类型的所有方法创建了一个名为CustomDataType的类,因此库中的每个方法都可以返回自定义类的对象,这样就可以返回我已经完成的多种数据类型:

public  class CustomDataType
{
    public double Value;
    public string Timestamp;
    public string Description;
    public string Unit;

   // special for GetparamterInfo
    public string OpcItemUrl;
    public string Source;
    public double Gain;
    public double Offset;
    public string ParameterName;
    public int ParameterID;

    public double[] arrayOfValue;
    public string[] arrayOfTimestamp;

    //
    public string[] arrayOfParameterName;
    public string[] arrayOfUnit;
    public string[] arrayOfDescription;
    public int[]    arrayOfParameterID;
    public string[] arrayOfItemUrl;
    public string[] arrayOfSource;
    public string[] arrayOfModBusRegister;
    public string[] arrayOfGain;
    public string[] arrayOfOffset;

}

图书馆包含以下方法:

public CustomDataType GetDeviceParameters(string deviceName)
    {
        ......................
        code



      getDeviceParametersObj.arrayOfParameterName;  

      return getDeviceParametersObj;

    }

    public CustomDataType GetMaxMin(string parameterName, string period, string maxMin)
    {
        .....................................code



                        getMaxMingObj.Value             =   (double)reader["MaxMinValue"];
                        getMaxMingObj.Timestamp         =   reader["MeasurementDateTime"].ToString();
                        getMaxMingObj.Unit              =   reader["Unit"].ToString();
                        getMaxMingObj.Description       =   reader["Description"].ToString(); 

        return getMaxMingObj;
    }

    public CustomDataType GetSelectedMaxMinData(string[] parameterName, string period, string mode)
    {................................code

        selectedMaxMinObj.arrayOfValue          =   MaxMinvalueList.ToArray();
        selectedMaxMinObj.arrayOfTimestamp      =   MaxMintimeStampList.ToArray();
        selectedMaxMinObj.arrayOfDescription    =   MaxMindescriptionList.ToArray();
        selectedMaxMinObj.arrayOfUnit           =   MaxMinunitList.ToArray();
        return selectedMaxMinObj;

    }

如图所示,不同的方法返回不同的数据类型,它对我来说工作正常,但是当我导入DLL并想要使用方法Visual Studio shwos CustomDataType类中的所有数据类型作为所有方法的建议,即使返回不同的数据。这在下图中是如此。正如我们从图片中可以看到所有不同返回数据的建议,用户可能会感到困惑并为某些方法选择错误的返回数据。所以我的问题是如何改进这一点。所以Visual Studio只为每种方法建议归属返回数据类型。

enter image description here

3 个答案:

答案 0 :(得分:5)

你采取了一种根本错误的方法。

使每个方法的返回类型包含适当的数据类型。某些方法可能具有相同的返回类型;对于其他数据类型,可能只有一个方法可以返回该类型。

在某些情况下,泛型可能会有所帮助 - 例如,如果您有不同的方法可以返回&#34;最小值和最大值&#34;有时long,有时int,有时float,有时MinMax<T> 1}}或者其他什么,那么你可以有一个{{1}}类型。

这应该给你提示:

  

并返回不同类型的数据

鉴于这些方法自然会返回不同类型的数据&#34;为什么你会给他们所有相同的返回类型?

但是将所有内容放入一种数据类型只是前进的方式。 (它的效率也非常低,但这是二级问题。)

下一步:删除这些公共字段,然后使用属性。您应该考虑一些类型是不可变的是否有意义,以及您当前正在暴露数组的位置,而是公开只读集合。

答案 1 :(得分:1)

如果您真的想使用您可能建议使用动态的方法

public dynamic GetDeviceParameters(string deviceName)
    {
        ......................
        code



      getDeviceParametersObj.arrayOfParameterName;  

      return getDeviceParametersObj;

    }

答案 2 :(得分:0)

你有点反对类型系统。我认为你的CustomDataType类会导致比它解决的问题更多的问题。

您应该为要使用的每个组合创建类,或者使用out参数从方法中返回多个值。

无法告诉Visual Studio根据返回的方法忽略某些属性。