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