C#根据传入的类名,方法名,执行此方法,或者赋值给委托

传入类的全名称,和类中的方法·名称,然后执行此方法,或者赋值给委托

在开发功能的时候,我总是会遇到一些业务场景,就是根据不能的参数或者配置,然后执行不能的业务逻辑。最基本的,都会想到用写if else,或者switch。

如果这种这种根据不同配置,执行不同逻辑很多的时候,就会写很多这种判断,不利于阅读和扩展。如果做成委托这种形式,就可以不写这种逻辑代码。

根据传入的类全名称和方法名称,然后反射出对象和方法,再赋值个给委托,然后再执行,就可以不写这总逻辑判断。

using System; using System.Reflection; using System.Threading; namespace reflector { class Program {   public delegate void shuchu();//定义的委托   static void Main(string[] args)   {    //传入的类全名称   string className = "reflector.myclass";   //得到此类的类型   Type type = Type.GetType(className);   // 获取当前程序集   Assembly assembly = Assembly.GetExecutingAssembly();   //动态创建当前类型的对象   dynamic obj = assembly.CreateInstance(type.FullName);   //根据传入的方法名获取当前类型的方法   MethodInfo mthof = type.GetMethod("writemyseage");   //执行此方法,如果此方法有参数,则传入参数   mthof.Invoke(obj,null//输出“hello”   //两种方法动态赋值给委托。   Delegate myshuchu2 = mthof.CreateDelegate(typeof(shuchu),obj);   Delegate myshuchu1 = Delegate.CreateDelegate(typeof(shuchu),obj,mthof);   //执行委托   myshuchu1.DynamicInvoke(null//输出“hello”   myshuchu2.DynamicInvoke(null//输出“hello”   } } class myclass{   public myclass(){}   public void writemyseage(){     Console.Write("hello");   } } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdgds.html