今天有群友问我
如何用String的文本,转换成对应类名的类
学习了下,感觉网络上有,不过表达的不够清晰,或者说
我最讨厌那些专业术语连篇的博文!
所以自己再总结下
using System.Reflection;//反射的引用
namespace ConsoleApp2//命名空间
{
class TestCase//做实验的类
{
public void Method(string aa)//做实验的方法
{
Console.WriteLine("调用成功!"+aa);
}
}
class Program
{
public static void run()
{
Type type = Type.GetType("ConsoleApp2.TestCase");//获取类 ""里为 命名空间.类名
Object obj = Activator.CreateInstance(type);//这里创建
Console.WriteLine(obj.GetType());//获取下是否正常,不要也罢
MethodInfo method = type.GetMethod("Method");//获取要使用的方法
object[] parameters = new object[] {"smsm" };//丢进方法一起运行的字段,可以多个
method.Invoke(obj,parameters);//运行方法~,第二个没有额外字段可以直接NULL
}
static void Main(string[] args)
{
run();
}
}
}
因为反射是通过String调用,实际上并没有明显的转换
所以不能像
TestCase aa = new TestCase();
aa.是.不出任何方法的~~~
只能用
MethodInfo method = type.GetMethod("Method");//输入方法名,调用