我有一个字典类,用于存储数据,并在会话过程中跟踪数百个变量。 我的任务是构建一个通用框架,我可以引用这个基本功能集,但允许调用组件在字典中使用不同的键和值。
目前,该词典使用4部分元组作为键,并使用2部分值。 我所关注的两个组件具有不同的键和值布局。 组件1 - 键是一个由5部分组成的元组,值为3部分。 组件2 - Key是一个由3部分组成的元组(字符串,整数,字符串)和相同的2部分值。
此类处理向其他组件的数据传输,因此为避免重复工作,希望在Common dll中保留尽可能多的常用功能,而外部组件将使用不同键/值的Survey类。我不确定我解释得不够好。 我已经包含了下面的当前代码。 对我来说,如果使用对象,对象和子类创建主要调查,则使用正确的键/值对创建外部组件。
public sealed class Survey
{
#region Private Objects
private Survey()
{
}
private Dictionary<SurveyKey, SurveyValue> survey = new Dictionary<SurveyKey, SurveyValue>();
private int maxLines = 50000;
private bool AllowLogging { get => (survey.Count > maxLines); }
#endregion
private void WriteData(SurveyKey key, SurveyValue value)
{
if (AllowLogging)
{
if (!survey.ContainsKey(key))
survey.Add(key, value);
else
survey[key] = value;
}
}
}
#region SurveyValue Class
public sealed class SurveyValue
{
public SurveyValue(int? value = null, string detail = null)
{
Detail = detail;
Value = value;
}
// Uses an either/or value; Value or Detail
public string Detail { get; private set; }
public int? Value { get; private set; }
}
#endregion
#region SurveyKey Class
public sealed class SurveyKey : Tuple<string, string, string, string>
{
public SurveyKey(string Signal, string SignalType, string Name, string OverallType) : base(Signal, SignalType, Name, OverallType) { }
public string Signal { get => Item1; }
public string SignalType { get => Item2; }
public string Name { get => Item3; }
public string OverallType { get => Item4; }
}
答案 0 :(得分:1)
使您的公共类具有K,V类型的通用类,并使用 where 关键字将字典K和V限制为KBaseClass和VBaseClass。 Component1可以公开KBaseClass和VBaseClass派生类型,并继承公共或重用common。
答案 1 :(得分:0)
原来,我在想这个问题。我需要做的就是创建我的基本字典作为Survey,并在我的外部组件中使用它。 出于某种原因,我认为我需要创建一个接口以允许插入基本字典。
private Dictionary<TKey, TValue> survey = new Dictionary<TKey, TValue>();