62,047
社区成员
发帖
与我相关
我的任务
分享
//webservice
/// <summary>
/// 执行BLL层调用
/// </summary>
/// <param name="ProjectName">项目名称</param>
/// <param name="spaceName">命名空间</param>
/// <param name="className">类名</param>
/// <param name="functionName">方法名</param>
/// <param name="parametersTypeStr">参数类型列表</param>
/// <param name="parametersValue">参数值列表</param>
/// <returns>有返回值:成功返回Object,失败返回string类型错误信息。无返回值:陈功返回 null,失败返回string类型错误信息</returns>
[WebMethod]
public string ExecuteCommand(string ProjectName, string spaceName, string className, object[] classMenth, string functionName, object[] parametersTypeStr, object[] parametersValue)
{
string Message = "0";
object ReturnValue = ReflectionCommand.OperateFuction(ProjectName, spaceName, className, classMenth,functionName, parametersTypeStr, parametersValue, out Message);
Message = Message == "0" ?ReturnValue==null?"": JsonHelper.GetJson<object>(ReturnValue) : Message;
return Message;
}
/// <summary>
/// 执行指定类的方法
/// </summary>
/// <param name="ProjectName">类所在项目名称 </param>
/// <param name="spaceName">类所在命名空间</param>
/// <param name="className">类名</param>
/// <param name="classMenth">构造参数列表</param>
/// <param name="functionName">要执行的方法名</param>
/// <param name="parametersType">执行方法的参数类型</param>
/// <param name="parametersValue">执行方法的参数集合</param>
/// <param name="Message">错误信息:0成功,err:存在此字符表示出错</param>
/// <returns>object</returns>
public static object OperateFuction(string ProjectName, string spaceName,
string className, object[] classMenth, string functionName,
object[] parametersTypeStr, object[] parametersValue,
out string Message)
{
object returnObj = null;
Message = "0"; //默认成功
System.Type type = GetClassType(ProjectName, spaceName, className);
if (type != null)
{
Object obj;
if (classMenth.Length > 0 && classMenth[0] != null)
{
obj = Activator.CreateInstance(type, classMenth);//得到类对象
}
else
{
obj = Activator.CreateInstance(type);//得到类对象
}
System.Type[] parametersType = new Type[parametersTypeStr.Length];// 定义参数类型
int i = 0;
foreach (string str in parametersTypeStr)
{
System.Type parameterType = Type.GetType(str);
parametersType[i] = parameterType;
i++;
}
System.Reflection.MethodInfo method;
if (parametersTypeStr[0].ToString() == "")
{
method = type.GetMethod(functionName); //类中查找方法
}
else
{
method = type.GetMethod(functionName, parametersType); //类中查找方法
}
if (method != null)
{
try
{
returnObj = method.Invoke(obj, parametersValue);//问题:请问我想在这里使用 out输出参数请问怎么用。问题2 parametersValue集合中有一项 是list<实体>请问我 在webservice里怎么写怎么传过来,传过来后怎么使用 }
catch (System.Exception e)
{
Message = "err:" + e.Message;
}
}
}
return returnObj;
}
请大家帮忙解答。谢谢,给分不吝啬。请同行救急。class Program
{
static void Main(string[] args)
{
string str = "aa";
List<Model> list = new List<Model>() { new Model { Id = 1, Name = "csdn" }, new Model { Id = 2, Name = "cnblogs" } };
object[] para = new object[] { list, str };
Assembly assem = Assembly.GetExecutingAssembly();
Type type = assem.GetType("ConsoleApplication1.ClassA");
MethodInfo method = type.GetMethod("Test");
object o = Activator.CreateInstance(type);
method.Invoke(o, para);
Console.ReadLine();
}
}
public class ClassA
{
public void Test(List<Model> list, out string str)
{
str = "test";
Console.WriteLine(str);
foreach (Model m in list)
Console.WriteLine("{0}=={1}", m.Id, m.Name);
}
}
public class Model
{
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
//问题1
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string str = "aa";
object[] para = new object[] { str };
Assembly assem = Assembly.GetExecutingAssembly();
Type type = assem.GetType("ConsoleApplication1.ClassA");
MethodInfo method = type.GetMethod("Test");
object o = Activator.CreateInstance(type);
method.Invoke(o, para);
Console.ReadLine();
}
}
public class ClassA
{
public void Test(out string str)
{
str = "test";
Console.WriteLine(str);
}
}
}
//test