根据输入参数返回值的泛型方法

本文关键字:泛型方法 返回值 参数 输入 | 更新日期: 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
    { ... }
}