我具有以下类型,其中T
仅应为int
,double
,string
和datetime
。但是,对class
使用约束可能太广泛了。
public class Field<T> where T : class
{
public int Tag { get; set; }
public T Value { get; set; }
}
我想到的可能的解决方案:
if ((typeof(T) != typeof(string)) ...
)的构造函数Value
移至具体的实现类。但是,这将导致具有其他几种类型,例如StringField : Field
,DateTimeField : Field
等。我还想更详细地介绍Tag
属性,并用枚举代替它,以确保只能使用预定义范围的值。但是,这种方法会导致(很小的)开销,因为我需要将Field
的实例表示为字符串。
什么是最佳选择?我有什么想念的吗?预先感谢