通用方法根据输入参数返回值

时间:2012-01-23 16:53:32

标签: c# generics reflection

我是新手使用泛型类。这是我的问题:

我有几个枚举,如: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;
        }
    }
}

是否有可能开发出这样的方法?

提前感谢,

1 个答案:

答案 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
    { ... }
}