泛型方法:就是对方法重载的优化,方法重载可以有不同的返回类型或者参数。方法重载和默认参数能会很好的优化重载的写法。
只是在最终运行的时候,还是展开了。就是说有几个泛型调用,最终还会展开成几个泛型方法。
泛型是个代码模板(类,接口,委托,方法),留下了类型填充的“空位”
这是泛型缓存的基础。
泛型缓存要有静态构造函数,是泛型类。
枚举的描述的泛型缓存就不好做。这是字典缓存
public static class EnumDescription { private static Dictionary<Type, string> _genericCache = new Dictionary<Type, string>(); public static string GetEnumDescription<T>(this T enumValue) where T : Enum { if (_genericCache.ContainsKey(typeof(T))) { return _genericCache.GetValueOrDefault(typeof(T)); } else { string value = enumValue.ToString(); FieldInfo field = enumValue.GetType().GetField(value); object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false); //获取描述属性 if (objs == null || objs.Length == 0) //当描述属性没有时,直接返回名称 return value; value = ((DescriptionAttribute)objs[0]).Description; _genericCache.Add(typeof(T), value); return value; } } }
另外,定义一个泛型类,它里面的静态方法(非构造函数)是没法访问的。