using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace stringConvertClass
{
class TestCase
{
public string toString()
{
return "TestCase !";
}
}
class test
{
//public void Method()
//{
// Console.WriteLine("调用成功!");
//}
public void Method(TestCase testcase)
{
Console.WriteLine(testcase.toString());
}
}
class Program
{
//C#反射调用 异常信息:Ambiguous match found.
//出现原因:由于被调用的dll里面有多个重载的函数,因此提示。
//解决方法: 反射调用不能调用重载的函数,只能调用唯一的函数。
public static void run(TestCase testcase)
{
string strClass = "stringConvertClass.test"; //命名空间+类名
string strMethod = "Method";//方法名
Type t;
object obj;
try
{
t = Type.GetType(strClass);//通过string类型的strClass获得同名类“t”
System.Reflection.MethodInfo method = t.GetMethod(strMethod);//通过string类型的strMethod获得同名的方法“method”
obj = System.Activator.CreateInstance(t);//创建t类的实例 "obj"
//method.Invoke(obj, null);//t类实例obj,调用方法"method"
//上面的方法是无参的,下面是有参的情况.
object[] objs = new object[] { testcase };
method.Invoke(obj, objs);//t类实例obj,调用方法"method(testcase)"
}catch(Exception Ex)
{
string Err = Ex.ToString();
Err = Err;
}
}
static void Main(string[] args)
{
TestCase testcase = new TestCase();//自己定义的类
run(testcase);
Console.ReadKey();
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace stringConvertClass
{
class TestCase
{
public string toString()
{
return "TestCase !";
}
}
class test
{
//public void Method()
//{
// Console.WriteLine("调用成功!");
//}
public void Method(TestCase testcase)
{
Console.WriteLine(testcase.toString());
}
}
class Program
{
//C#反射调用 异常信息:Ambiguous match found.
//出现原因:由于被调用的dll里面有多个重载的函数,因此提示。
//解决方法: 反射调用不能调用重载的函数,只能调用唯一的函数。
public static void run(TestCase testcase)
{
string strClass = "stringConvertClass.test"; //命名空间+类名
string strMethod = "Method";//方法名
Type t;
object obj;
try
{
t = Type.GetType(strClass);//通过string类型的strClass获得同名类“t”
System.Reflection.MethodInfo method = t.GetMethod(strMethod);//通过string类型的strMethod获得同名的方法“method”
obj = System.Activator.CreateInstance(t);//创建t类的实例 "obj"
//method.Invoke(obj, null);//t类实例obj,调用方法"method"
//上面的方法是无参的,下面是有参的情况.
object[] objs = new object[] { testcase };
method.Invoke(obj, objs);//t类实例obj,调用方法"method(testcase)"
}catch(Exception Ex)
{
string Err = Ex.ToString();
Err = Err;
}
}
static void Main(string[] args)
{
TestCase testcase = new TestCase();//自己定义的类
run(testcase);
Console.ReadKey();
}
}
}