我正在优化一些代码。我们拥有一个系统,在该系统中,我们可以通过函数调用从文件中检索数据,该函数采用对象类型和数据名称,并返回有问题的常量。像这样:
float value = GetData(type, "StartValue");
它也可能看起来像这样,其中类型通过类“ A”是隐式的:
static class A
{
static void some_function(self)
{
float value = self.GetData("StartValue");
}
}
在特定的发行版中,该值是恒定的,而类型是隐式的,尽管哪些对象定义了该函数(类来自“类”)。我想尝试的是用实际的各个值替换所有GetData调用。然后为some_function和可以调用它的类的每种组合创建一个函数。这些信息对我来说很容易获得,存储在json文件中的常量值也很容易获得。实际函数在运行时与反射链接在一起,因此很容易映射到正确的函数。
类似
static class MyObject //A is "a part" of this class
{
static void some_function_MyObject_version10(self)
{
float value = 5;
}
}
我已经在最简单的情况下使用Cecil做到了这一点,但是当这些GetData调用嵌套在if语句和其他类似内容中时,我认为复杂性很快就变得一发不可收拾。因此,我正在考虑使用Roslyn / CodeAnalysis执行此操作,但是该文档记录不佳,或者所有示例和教程都已过时。但是,如果这是最好的方法,那么我当然会进行挖掘并使其实现,但是什么是最好的方法呢?