我是新手使用泛型类。这是我的问题:
我有几个枚举,如:x.PlatformType,y.PlatformType,z.PlatformType等...
public class Helper<T>
{
public T GetPlatformType(Type type)
{
switch (System.Configuration.ConfigurationManager.AppSettings["Platform"])
{
case "DVL":
return // if type is x.PlatformType I want to return x.PlatformType.DVL
// if type is y.PlatformType I want to return y.PlatformType.DVL
// etc
default:
return null;
}
}
}
是否有可能开发出这样的方法?
提前感谢,
答案 0 :(得分:4)
既然你知道它是一个枚举,最简单的方法就是使用Enum.TryParse
:
public class Helper<T> where T : struct
{
public T GetPlatformType()
{
string platform = System.Configuration.ConfigurationManager.AppSettings["Platform"];
T value;
if (Enum.TryParse(platform, out value))
return value;
else
return default(T); // or throw, or something else reasonable
}
}
注意,我删除了Type
参数,因为我认为它是由T
给出的。也许对你来说更好(取决于使用场景)使方法通用,而不是整个类 - 如下所示:
public class Helper
{
public T GetPlatformType<T>() where T : struct
{ ... }
}