当前位置:首页 > Windows程序 > 正文

c#根据配置文件反射

2021-03-23 Windows程序

由于项目中用到了反射,准备把各个类库都先写在配置文件中,然后读取配置文件,,再对配置文件中配置的类库进行反射。

这样做的好处是各个类库保持独立,其中一个类库出现问题不会影响其他类库,更新项目时,只要更新单个DLL就可以了。

1. 首先看下配置文件怎样进行配置

技术分享

在上面的配置文件中创建了自定义节点processors,然后在processors节点下面对应的是方法节点。

上面的项目中使用了两个方法,所以创建了两个节点。type表示程序集名称, method表示方法名称。

2.看下怎样使用配置文件

[html] view plaincopy

 

private void button1_Click(object sender, EventArgs e)  

       {  

           //返回配置文件中的节点名称和元数据信息  

           IDictionary<String,MethodInfodic=LoadAppConfig(Application.StartupPath + "\\App.config");  

           //测试GetInfo方法  

           var mi = dic["GetInfo"];  

           var obj = Activator.CreateInstance(mi.DeclaringType);  

           object[] para={"hello"};//如果数组的长度和参数的个数不匹配,会报异常  

           //返回方法结果值  

           object result = mi.Invoke(obj, para);  

           MessageBox.Show(result.ToString());  

       }  

  

       /// <summary>  

       /// 读取配置文件  

       /// </summary>  

       /// <param name="path"></param>  

       /// <returns></returns>  

       private Dictionary<string, MethodInfo> LoadAppConfig(string filename)  

       {  

           var processors = new Dictionary<string, MethodInfo>();  

           var xml = new XmlDocument();  

           xml.Load(filename);  

  

           foreach (XmlNode node in xml.SelectNodes("configuration/processors/*"))  

           {  

               if (node.NodeType != XmlNodeType.Element)  

                   continue;  

  

               var method = node.Name;  

               try  

               {  

                   string typeName = node.Attributes["type"].Value;//程序集名称  

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/65958.html