C# 如何为泛型方法的类型参数使用变量

C# 如何为泛型方法的类型参数使用变量,c#,generics,casting,C#,Generics,Casting,我一直在开发一个迷你ORM,它只是一个非常基本的转换器,我的应用程序中有一些枚举。在这个应用程序中考虑性别。我现在有了这个片段: public T ParseEnum<T>(string value) { return (T)Enum.Parse(typeof(T), value, true); } public T ParseEnum(字符串值) { 返回(T)Enum.Parse(typeof(T),value,true); } 这很有效。然而,有一个陷阱。我需要硬编

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

public T ParseEnum<T>(string value)
{
    return (T)Enum.Parse(typeof(T), value, true);
}
public T ParseEnum(字符串值)
{
返回(T)Enum.Parse(typeof(T),value,true);
}
这很有效。然而,有一个陷阱。我需要硬编码我想要的枚举。如果我想动态切换到另一种类型,比如大陆(一个有7个值的枚举),我有一个问题,因为我不知道ORM何时读取哪个变量。有解决办法吗

我的意思是:

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

我想用一个变量(例如property.PropertyType)切换出“Continental”。

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

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

我不知道为什么在过去的几天里有那么多人发布了同样的问题。答案是,“不,你不能那样做”。@JohnSaunders有一个好的重复目标吗?我还没有找到。@JohnSaunders也许有一个数据库最终项目到期了?学期快结束了。因为提问比搜索更容易。对我的两个枚举都有效。谢谢