我有以下代码:
public class DataReader<T> where T : class
{
public T getEntityFromReader(IDataReader reader, IDictionary<string, string> FieldMappings)
{
T entity = Activator.CreateInstance<T>();
Type entityType = entity.GetType();
PropertyInfo[] pi = entityType.GetProperties();
string FieldName;
while (reader.Read())
{
for (int t = 0; t < reader.FieldCount; t++)
{
foreach (PropertyInfo property in pi)
{
FieldMappings.TryGetValue(property.Name, out FieldName);
Type genericType = property.PropertyType;
if (!String.IsNullOrEmpty(FieldName))
property.SetValue(entity, reader[FieldName], null);
}
}
}
return entity;
}
}
当我到达 type 的字段时Enum
,或者在这种情况下NameSpace.MyEnum
,我想做一些特别的事情。我不能仅仅SetValue
因为来自数据库的值是“m”,而值Enum
是“Mr”。所以我需要调用另一种方法。我知道!旧系统对吗?
那么如何确定一个PropertyInfo
项目何时属于特定的枚举类型呢?
因此,在上面的代码中,我想首先检查PropertyInfo
类型是否为特定枚举,如果是,则调用我的方法,如果不是,则简单地允许SetValue
运行。