这是使用反射的最佳方式



我的应用程序付出了性能损失,因为我使用反射,特别是获取类和属性的属性。

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

今天我用的是:

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
}

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

相关内容

  • 没有找到相关文章

最新更新