1.在写一个记录日志到文件中的类库(生成dll文件copy到一个目录中去,然后在主函数的appconfig中去配置。
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WriteToTxtLib { public class WriteLog { public void Write(string logMessage) { using (StreamWriter sw = new StreamWriter("e:\test\writelog.txt",true)) { sw.WriteLine(DateTime.Now.ToLongDateString() + logMessage); } } } }
2.新建一个测试的主函数,其中appconfig进行如下配置
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <appSettings> <add key="dllNamespaceName" value="WriteToWordLib"/> <add key="dllClassName" value="WriteLog"/> <add key="dllMethodName" value="Write"/> <add key="dllPath" value="e: estWriteToWordLib.dll"/> </appSettings> </configuration>
3.给主函数添加如下代码
using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Configuration; using System.Linq; using System.Management.Instrumentation; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Configuration; using System.Data; using System.Drawing; using System.Text; using System.IO; using System.Collections; using System.Configuration; namespace 我的日志功能函数 { class Program { static void Main(string[] args) { WriteLog("主函数开始"); Console.ReadKey(); } private static void WriteLog(string logMessage) { /* * 这是appconfig文件中的指定的内容 <add key="dllNamespaceName" value="WriteToTxtLib"/> <add key="dllClassName" value="WriteLog"/> <add key="dllMethodName" value="Write"/> <add key="dllPath" value="e:\testWriteToTxtLib.dll"/> */ //获取到命名空间,类名,方法名,dll路径 string dllNamespaceName = System.Configuration.ConfigurationSettings.AppSettings["dllNamespaceName"].ToString(); string dllClassName = System.Configuration.ConfigurationSettings.AppSettings["dllClassName"].ToString(); string dllMethodName = System.Configuration.ConfigurationSettings.AppSettings["dllMethodName"].ToString(); string dllPath = System.Configuration.ConfigurationSettings.AppSettings["dllPath"].ToString(); Assembly asm = Assembly.LoadFile(dllPath);//加载dll Type classType = asm.GetType(dllNamespaceName + "." + dllClassName);//获取类型 object obj = Activator.CreateInstance(classType);//根据类型创建对象 MethodInfo method = classType.GetMethod(dllMethodName);//找到指定的方法 object o = method.Invoke(obj, new object[] { logMessage });//调用方法 } } }