通过dll文件地址,类似Java反射机制创建实例调用方法。
示例:
public JObject Execute(ApiExecutionContext context) {
JObject result = null;
CMConnection conn = context.Connection;
string oid = context.Parameters.Get("oid");
string assembly_name = context.Parameters.Get("namespace");
string length = context.Parameters.Get("length");
DataViewModel dataView = context.DataView;
InstanceView instance = DataUtil.GetOneInstance(conn, dataView, oid);
string rootPath = DataUtil.GetFileRootPath(instance);
//加载程序集(dll文件地址),使用Assembly类
Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "custom/lib/"+ assembly_name + ".dll");
//获取类型,参数(名称空间+类)
Type type = assembly.GetType(assembly_name + ".Class1");
Object obj = Activator.CreateInstance(type); // 创建实例
try {
MethodInfo method = type.GetMethod("method", new Type[] { typeof(string), typeof(string) }); // 获取方法信息
object[] parameters = new object[] { rootPath, length };
result = (JObject)method.Invoke(obj, parameters); // 调用方法,有参数,有返回值
}
catch (Exception e) {
result = new JObject();
result.Add("data", null);
result.Add("msg", e.Message);
}
return result;
}