反射实例--动态创建实例
一、动态创建对象
1.新建一个接口:IDbHelper.cs
public interface IDbHelper { void Query(); }
2.新建一个类:DbHelper.cs 继承 IDbHelper.cs 接口
public class DbHelper : IDbHelper { public void Query() { Console.WriteLine($"这是一个{this.GetType().Name}的query方法"); } }
3.在配置文件里面新增节点
<appSettings> <add key="IDbHelerConfig" value="ReflectionDemo.Mysql,ReflectionDemo.Mysql.DbHelper"/> </appSettings>
4.另外新建一个类,用于封装动态创建对象
public class SimpleFactory { private static string config = ConfigurationManager.AppSettings["IDbHelerConfig"]; public static IDbHelper CreateIntance() { //1.获取DLL Assembly assembly = Assembly.Load(config.Split(',')[0]); //2.获取特定的类型信息 var type = assembly.GetType(config.Split(',')[1]); //3.创建对象 object o = Activator.CreateInstance(type); //4.返回 return (IDbHelper)o; } }
5.新建一个控制台程序用于调用上面的代码
static void Main(string[] args) { IDbHelper dbHelper = SimpleFactory.CreateIntance(); dbHelper.Query(); }
6.输出结果
将来的你,一定会感谢现在努力的自己!