110,532
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 全局通用反射示例
/// </summary>
/// <param name="assemblyName">项目名称</param>
/// <param name="className">类名称</param>
/// <param name="methodName">函数名称</param>
/// <param name="parms">参数</param>
/// <returns></returns>
public static Object GetClassMethodReturnResult(string assemblyName, string className, string methodName, Object[] parms)
{
Assembly ass = Assembly.Load(assemblyName);
Type[] types = ass.GetTypes();
object result = null;
foreach (Type item in types)
{
if (item.Name.Equals(className))
{
try
{
if (parms != null && parms.Length > 0)
{
object obj = Activator.CreateInstance(item);
Type[] types1=new Type[parms.Length];
for (int i = 0; i < parms.Length; i++)
{
types1[i] = parms[i].GetType();
}
MethodInfo[] methods = item.GetMethods();
foreach (var mm in methods)
{
if (mm.Name == methodName)
{
if(mm.GetParameters().Length==parms.Length)
result = mm.Invoke(obj, parms);
}
}
}
else
{
object obj = Activator.CreateInstance(item);
MethodInfo m = item.GetMethod(methodName,new Type[]{});
result = m.Invoke(obj, parms);
}
}
catch (Exception e)
{
throw e;
}
}
}
return result;
}