c# – 通用对象的通用列表
发布时间:2020-12-15 06:36:56 所属栏目:百科 来源:网络整理
导读:假设我有一个表示数据字段的对象,该对象需要以下属性:名称,类型,值,长度.这是对象: class FieldT{ public string Name { get; set; } public Type Type { get { return typeof(T); } } public int Length { get; set; } public T Value { get; set; }} 我
假设我有一个表示数据字段的对象,该对象需要以下属性:名称,类型,值,长度.这是对象:
class Field<T> { public string Name { get; set; } public Type Type { get { return typeof(T); } } public int Length { get; set; } public T Value { get; set; } } 我使用泛型,因为我想强制代码的用户只能分配某个类型的值. – -编辑 – – List<Field<object>> lst = new List<Field<object>>(); lst.Add(new Field<string>()); lst.Add(new Field<int>()); lst.Add(new Field<SomeObjectFromMyApp>()); 后来我将不得不在一个循环中自动查询这些对象及其属性,就像这样: foreach(Field<object> fld in lst) { Type t = fld.Type; //do some other stuff } 解决方法
是的,仿制药是一个不错的选择.实现类型安全性的关键(并且识别具有Type属性的类型)是在列表和Field< T>类之间添加抽象.
有场< T>实现接口IField.此界面不需要任何成员. 然后将您的列表声明为列表< IField>. 这样,您将列表限制为仅包含字段,但每个字段可以是不同的类型. 然后再读取这些值,就可以了 foreach(var field in list) { var type = field.Type; .... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |