当前位置:首页 > 科技新闻 > Windows编程 > 正文

c#代码的执行过程及反射
2021-10-18 17:42:29


0.c#代码的执行过程:

c#(编译器)-->dll/exe(metadata/IL)-->CRL-->机器码


1. appsettings.json配置文件配置要访问的类和dll

"ReflictionConfig": "Zhaoxi.AspNetCore.DB.MySql.MySqlHelper,Zhaoxi.AspNetCore.DB.MySql.dll"

2.代码读取dll,实例化一个配置类的对象

public static IDBHelper CreateInstance()

{

string ReflictionConfig = CustomConfigManager.GetConfig("ReflictionConfig");

string tyepName= ReflictionConfig.Split(",")[0];

string dllName = ReflictionConfig.Split(",")[1];

//Assembly assembly = Assembly.Load(dllName); //Dll名称,不需要后缀

Assembly assembly3 = Assembly.LoadFrom(dllName); //dll名称(需要后缀)


Type type = assembly3.GetType(tyepName);

object obj = Activator.CreateInstance(type);

return obj as IDBHelper;

}

3. 反射可以突破方法的权限限制

100_000_000

4. 反射性能并不会消耗多大,100万次循环和普通方法相差3倍的时间,

单例模式=是一种常见类的写法,

public class SingletonA

{

//私有成员,使用时分配内存

private static SingletonA _instance = null;

//私有构造,杜绝直接new类

private SingletonA() { }

//获取实例

public static SingletonA GetInstance ()

{

if (_instance == null)

{

_instance = new SingletonA();

}

return _instance;

}

}


本文摘自 :https://blog.51cto.com/u