为了账号安全,请及时绑定邮箱和手机立即绑定

用于外部组件的子类化字典

用于外部组件的子类化字典

C#
GCT1015 2021-06-23 15:19:24
我有一个字典类,用于存储数据,并在会话过程中跟踪数百个变量。我的任务是构建一个通用框架,我可以引用该基本功能集,但允许调用组件在字典中使用不同的键和值。目前,该字典使用 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。


查看完整回答
反对 回复 2021-06-26
  • 2 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信