如何将变量用于泛型方法的类型参数

时间:2015-05-12 21:32:14

标签: c# generics casting

我一直在研究迷你ORM,它只是一个非常基本的转换器,我的应用程序中有一些枚举。在这个应用程序中考虑性别。我现在有这个片段:

public T ParseEnum<T>(string value)
{
    return (T)Enum.Parse(typeof(T), value, true);
}

这很有效。然而,有一个问题。我需要硬编码我想要的枚举。如果我想动态切换到另一种类型,让我们说Continent(一个包含7个值的枚举),我有一个问题,因为我不知道ORM何时读取哪个变量。有解决方案吗?

我的意思摘要:

ParseEnum<Continent>(reader[idx].ToString());

我想转出&#34;大陆&#34;使用变量,例如property.PropertyType。

1 个答案:

答案 0 :(得分:1)

我会将ParseEnum作为非泛型方法,然后在代码中的任何地方进行类型转换,您可以将其类型转换为实际的枚举类型。请注意,enumType可以是完全限定的字符串,然后您可以使用System.Type方法在运行时从该字符串创建System.Type.GetType

public object ParseEnum(Type enumType, string value)
{
    return Enum.Parse(enumType, value, true);
}