动态加载类和调用函数

时间:2014-08-26 02:54:22

标签: c# wpf

我的项目中有大约80 -90个类,每个类都有一个函数可以计算并返回一些值。

虚构的班级名称 - > AAB,AAC .... ZZZ

它们具有以下功能:CalAAB(double [] param1,int param2)..等等,适用于每个类。

我计划制作一个程序来创建一个程序,用户可以选择任意一个或两个类,一些操作/计算将通过用户选择的类的功能完成。

我可以在If else的帮助下甚至在switch的帮助下完成上述任务,但这限制了我通过混合3-4个类来进行复杂的查询,程序将会过于冗长。

是否可以将这些类和函数的名称保存到文本文件中,然后根据用户的选择加载类和函数。

我的主要要求是如何执行以下行

ClassName cname = new ClassName(); 

double [] result = cname.FunctionName(Param1, Param2);

其中ClassName和FunctionName将从文本文件加载为字符串

1 个答案:

答案 0 :(得分:3)

您需要使用Reflection。像这样......

Assembly assembly = Assembly.LoadFile("YourAssembly.dll");
Type type = assembly.GetType("NameSpace.AAB"); 
var aabInstance = Activator.CreateInstance(type, null);
MethodInfo methodInfo = type.GetMethod("CalAAB");
var result = methodInfo.Invoke(classInstance, param1, param2);