关于泛型的代码优化(简短)解决方法

关于泛型的代码优化(简短)


  public DataSet GetValues()
        {
            if (this.Group == CategoryGroup.Banner)
                this.GetValues<Tb_Banner>();
            if (this.Group == CategoryGroup.News)
                this.GetValues<Tb_News>();
            if (this.Group == CategoryGroup.Product)
                this.GetValues<Tb_Product>();
        }


CategoryGroup是个枚举。。

我有没办法把this.Group转换成一个类型。。然后传入到GetValues<T>的泛型参数中去?
------解决方案--------------------
可以使用反射,如果枚举和泛型的名称一一对应,并且枚举类型比较多(少的话你那样写代码还少点)的话。
------解决方案--------------------
要泛型就泛型到底
返回的是弱类型的DataSet~ 你是几个意思
public List<T> GetValue<T>()
{
Type t=typeof(T)
if(t=typeOf(Tb_Banner))
}
------解决方案--------------------

public interface IDataProvider
    {
        DataSet GetValus();
    }

    public enum CategoryGroup
    {
        Banner,
        News,
        Product
    }

    public class GenericDataProvider<T> : IDataProvider
    {
        public DataSet GetValus()
        {
            Console.WriteLine("hello world");
            return null;
        }

        public override string ToString()
        {
            return typeof(T).FullName;
        }
    }

    public class BannerData
    {
    }

    public class NewsData
    {
    }

    public class ProductData
    {
    }

static void Main(string[] args)
        {
            CategoryGroup category = CategoryGroup.Banner;
//Study是命名空间,具体的要根据实际情况来改
            Type dataType = Type.GetType("Study." + category.ToString() + "Data");
            Console.WriteLine(dataType.FullName);
            Type t = typeof(GenericDataProvider<>);
            Type[] typeArgs = { dataType };
            Type constructed = t.MakeGenericType(typeArgs);
            object o = Activator.CreateInstance(constructed);
            Console.WriteLine(o.ToString());
            IDataProvider provider = o as IDataProvider;
            provider.GetValus();
            Console.Read();
        }