C#通过反射动态加载dll,读取module、类、方法、特性,并通过反射+简单工厂+配置文件 实现ioc

时间:2025-04-02 08:08:09
  • class Program
  • {
  • static void Main(string[] args)
  • {
  • SafeInvoke(() =>
  • {//通过委托实现通用的异常处理
  • #region 通过反射创建对象
  • {
  • //1 动态加载 默认加载当前路径的dll文件,不需要后缀
  • Assembly assembly = ("");
  • Assembly assembly1 = (@"E:\winningjob\C#workspace\Projects\MyHomeWork\\bin\Debug\");
  • Assembly assembly2 = ("");// 可以是当前路径 也可以是完整路径
  • //2 获取类型 (获取类型信息的方式不止一个)
  • Type typeDBHelpher = ("");
  • //3 创建对象
  • object oDBHelper = (typeDBHelpher);
  • //4 调用方法 实例方法、静态方法、重载方法 选修:调用私有方法 调用泛型方法
  • {//无参数
  • MethodInfo method = ("Show");
  • (oDBHelper, null);
  • }
  • {//有参数
  • MethodInfo method = ("MxdQuery");
  • (oDBHelper, new object[] { "测试入参" });
  • }
  • {//泛型参数
  • MethodInfo method = ("ShowGeneric");
  • method = (typeof(string));//如果是泛型方法,那么需要先制定参数的类型
  • (oDBHelper, new object[] { "测试入参" });
  • }
  • {//当需要获取的方法有重载方法的时候,获取方法时需要指定参数顺序和类型
  • MethodInfo method = ("Show_重载", new Type[] { });
  • (oDBHelper, null);
  • MethodInfo method1 = ("Show_重载", new Type[] { typeof(string) });
  • (oDBHelper, new object[] { "测试入参" });
  • }
  • }
  • #endregion
  • ("*************************************************");
  • #region 创建对象 反射+简单工厂+配置文件 ioc
  • {
  • //IDBHelper oDBHelperFactory = ();
  • var oDBHelperFactory = <IDBHelper>();
  • <User>(1);//这里是测试根据Id获取一行数据
  • <Company>();//这里测试获取模型表的所有数据
  • }
  • #endregion
  • });
  • }
  • /// <summary>
  • /// 通用的异常处理
  • /// </summary>
  • /// <param name="act">对应任何的逻辑</param>
  • public static void SafeInvoke(Action act)
  • {
  • try
  • {
  • ();
  • }
  • catch (Exception ex)//按异常类型区分处理
  • {
  • ();
  • }
  • }
  • }