我创建了一个包含许多不同方法的类库(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只为每种方法建议归属返回数据类型。
答案 0 :(得分:5)
你采取了一种根本错误的方法。
使每个方法的返回类型包含适当的数据类型。某些方法可能具有相同的返回类型;对于其他数据类型,可能只有一个方法可以返回该类型。
在某些情况下,泛型可能会有所帮助 - 例如,如果您有不同的方法可以返回"最小值和最大值"有时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根据返回的方法忽略某些属性。