如何更具体地说明通用约束?

时间:2019-06-26 09:58:44

标签: c# generics design-patterns

我具有以下类型,其中T仅应为intdoublestringdatetime。但是,对class使用约束可能太广泛了。

public class Field<T> where T : class 
{
    public int Tag { get; set; }

    public T Value { get; set; }
}

我想到的可能的解决方案:

  1. 添加进行检查(if ((typeof(T) != typeof(string)) ...)的构造函数
  2. 将类更改为抽象类,并将Value移至具体的实现类。但是,这将导致具有其他几种类型,例如StringField : FieldDateTimeField : Field等。

我还想更详细地介绍Tag属性,并用枚举代替它,以确保只能使用预定义范围的值。但是,这种方法会导致(很小的)开销,因为我需要将Field的实例表示为字符串。

什么是最佳选择?我有什么想念的吗?预先感谢

0 个答案:

没有答案