jsm*_*ith 6 c# enums types typeof
我有一个类从逗号分隔的文本文件中解析数据.我有一个字段的枚举,以帮助我更轻松地解析数据.解析所有记录的类保存每个字段的公共变量,当然还有它们的变量类型.我需要根据给定的枚举来获取这些变量的类型.
public enum DatabaseField : int
{
NumID1 = 1,
NumID2 = 2,
NumID3 = 3,
};
public class DataBaseRecordInfo
{
public long NumID1 { get; set; }
public int NumID2 { get; set; }
public short NumID3 { get; set; }
public static Type GetType(DatabaseField field)
{
Type type;
switch (field)
{
case DatabaseField.NumID1:
type = typeof(long);
break;
case DatabaseField.NumID2:
type = typeof(int);
break;
case DatabaseField.NumID3:
type = typeof(short);
break;
default:
type = typeof(int);
break;
}
return type;
}
};
Run Code Online (Sandbox Code Playgroud)
NumID1,NumID2,NumID3都在我的构造函数中分配.但是,我希望在没有创建实例的情况下获取这些类型DataBaseRecordInfo.现在我上面的静态方法可行,但是,如果我想更改变量类型,我将不得不在2个位置更改它.有没有办法绕过这两个地方改变它并将其保持为静态方法?
如果名称始终完全匹配,您可以使用反射来完成此操作。
return typeof(DataBaseRecordInfo)
.GetProperty(field.ToString(), BindingFlags.Public | BindingFlags.Instance)
.PropertyType;
Run Code Online (Sandbox Code Playgroud)
您甚至可以将这些值缓存在字典中,因此如果找到,只需返回字典条目,否则使用反射确定并缓存结果。
| 归档时间: |
|
| 查看次数: |
723 次 |
| 最近记录: |