使用反射的最佳方式

时间:2016-10-30 13:23:16

标签: c# optimization reflection

我的应用程序因性能损失而付出代价,因为我正在使用反射,专门用于获取类和属性的属性。

为了优化我的应用程序,我想生成一个基于反射但在运行时替换它的库。

今天我用的是:

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
}

1 个答案:

答案 0 :(得分:0)

我创建了一个静态文件,在开发过程中使用反射生成,在运行时我只是查询这个静态类,它解决了所有性能问题。