我有一个字典类,用于存储数据,并在会话过程中跟踪数百个变量。我的任务是构建一个通用框架,我可以引用该基本功能集,但允许调用组件在字典中使用不同的键和值。目前,该字典使用 4 部分元组作为键和 2 部分值。我要绑定的两个组件具有不同的键和值布局。组件 1 - 键是一个由 5 部分组成的元组,值是一个由 3 部分组成的元组。组件 2 - 键是一个由 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 Classpublic 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 Classpublic 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; }}
2 回答
holdtom
TA贡献1805条经验 获得超10个赞
使您的通用类成为 K、V 类型的泛型,并使用where关键字将字典 K 和 V 限制为 KBaseClass 和 VBaseClass。Component1 可以公开 KBaseClass 和 VBaseClass 派生类型,并从 common 继承或重用 common。
- 2 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消