c#动态调用不同程序集和命名空间下的类
首先创建一个RefectionHelper类
public static class RefectionHelper
{
//利用反射创建类的实例
public static dynamic CreateInstance(string assemblyName, string nameSpace, string className)
{
try
{
string fullName = nameSpace + "." + className;//命名空间.类型名
dynamic ect = Assembly.Load(assemblyName).CreateInstance(fullName);//加载程序集,创建程序集里面的 命名空间.类型名 实例
return ect;//类型转换并返回
}
catch (Exception ex) { Console.WriteLine(ex.Message + "===" + ex.StackTrace); return false; }
}
}
我们这个时候就可以调用了
var reportClass = RefectionHelper.CreateInstance("DigitalLabSysReport", "DigitalLabSysReport.SupervisionReport", "ScheduleReport");//这里就是程序集,命名空间,类型名
//我有一个DigitalLabSysReport程序集下有一个SupervisionReport文件夹所以命名空间是DigitalLabSysReport.SupervisionReport
//调用ScheduleReport类里的PushData方法
reportClass.PushData(obj);