之前用到过一次,读取配置文件(数据库)根据里面信息批量生成.cs文件,动态创建类(结构体)并赋值的操作。
这次又有一个好的用法,也是应用了反射机制;在框架架构中,可以通过传参来创建类,通过传参来找到该类,通过传参来调用该类中某个方法。这样就很灵活,我可以在同一个架构中传递不同的参数,扩展性强。
测试一下:
using System;
namespace 动态生成类
{
class Program
{
static void Main(string[] args)
{
IObject obj = (IObject) Activator.CreateInstance(Type.GetType("动态生成类.MyObject"), "Wenxuejia");
//obj.printName();
string methodName = "printName";
string methodName2 = "printTest";
//无参调用
var mi =
obj.GetType().GetMethod(methodName);
if(mi != null)
{
mi.Invoke(obj,System.Reflection.BindingFlags.Public,null,null,null);
}
//含参调用
var mi2 =
obj.GetType().GetMethod(methodName2);
object[] sss = new object[1];
sss[0] = "ssds";
if(mi2 != null)
{
mi2.Invoke(obj, System.Reflection.BindingFlags.Default, null, sss, null);
}
Console.ReadLine();
}
}
public interface IObject
{
void printName();
}
public class MyObject : IObject
{
private string m_name;
public MyObject(string name)
{
m_name = name;
}
public void printName()
{
Console.WriteLine(m_name);
}
public void printTest(string s)
{
Console.WriteLine(s);
}
}
}