我的应用程序因性能损失而付出代价,因为我正在使用反射,专门用于获取类和属性的属性。
为了优化我的应用程序,我想生成一个基于反射但在运行时替换它的库。
今天我用的是:
MyAttribute[] attributes = (MyAttribute[])Attribute.GetCustomAttributes(typeof(CurrentNamespace.MyClass), typeof(MyAttribute));
var x = GetX(attributes);
我可以在不同的命名空间中生成一个具有相同类名的类,并静态调用它。
MyReflectingClassInterface reflectingClass = getClassFromAssembly("ReflectingNamespace.MyClass");
var x = reflectingClass.getX(); // can't be static if I want to use interface.
或者, 也许最好的方法是使用一个静态开关:
static public X getX(Type type){
if(type == typeof(CurrentNamespace.MyClass))
return new X(5); // hard coded answer
}
答案 0 :(得分:0)
我创建了一个静态文件,在开发过程中使用反射生成,在运行时我只是查询这个静态类,它解决了所有性能问题。