具有这些枚举
ReportType, ReportField and ReportDimension
,具有以下规范:
基本上,我有三种报告类型,每种类型都是唯一的,一种支持某些ReportFields和某些ReportDimensions(无关紧要),我想创建一个包含3个KeyValuePair项的字典(用于每种报告类型),并具有元组作为值,如下所示:
private readonly Dictionary<ReportType, (List<ReportField>, List<ReportDimension>)> _reportTypeDimensionMappings;
我想直接实例化此结构,但是我打算采用的方式给我构建错误:
private readonly Dictionary<ReportType, (List<ReportField>, List<ReportDimension>)> _reportTypeDimensionMappings = new Dictionary<ReportType,
(List<ReportField>, List<ReportDimension>)>
{
{ReportType.Session, new (List<ReportField>, List<ReportDimension>)
{
new List<ReportField>
{
},
new List<ReportDimension>
{
}
}
},
};
是否存在一种明确的良好实践方法来实例化元组字典的值?
答案 0 :(得分:2)
已经建议您不要在这里使用元组,我同意,但是要回答您的问题,语法非常简单:
private readonly Dictionary<ReportType, (List<ReportField>, List<ReportDimension>)> _reportTypeDimensionMappings =
new Dictionary<ReportType, (List<ReportField>, List<ReportDimension>)>
{
{ReportType.Session, (new List<ReportField>(), new List<ReportDimension>()) }
};
答案 1 :(得分:1)
似乎一门课程会更适合您的需求。您可以创建一个名为Report
的类,其中包含您的List<ReportField>
和List<ReportDimension>
属性。
当您需要将短暂的,相对较小的值或对象集合视为一件事情(即从方法返回)时,Tuples非常有用,但是为该对象创建专用类的成本并不高这些类型的东西。正如丹尼尔·A·怀特(Daniel A. White)在您的注释部分中指出的那样,这会使您的代码更难阅读,并且鉴于您不需要出于任何目的创建类的太多理由,我想说任何理由都足够好。 / p>
答案 2 :(得分:0)
您可以通过调用Tuple t = Tuple.Create(object1, object2);
创建一个元组对象,然后可以通过t.Item1
来获取object1
的值,而使用t.Item2
来获取object2
的值