根据输入参数返回值的泛型方法
本文关键字:泛型方法 返回值 参数 输入 | 更新日期: 2023-09-27 18:21:06
我是使用泛型类的新手。这是我的问题:
我有几个枚举,如: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;
}
}
}
有可能开发出这样的方法吗?
提前感谢,
既然您知道它是一个枚举,那么最简单的方法就是使用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
{ ... }
}