李维强-15级 发表于 2017-9-8 07:02:07

c# reflection 反射 委托

本帖最后由 李维强-15级 于 2017-9-25 05:35 编辑

http://www.cnblogs.com/wangshenhe/p/3256657.html
下面是应用
通过函数名字符串执行相应的函数,用反射
using System;
namespace Ref
{
    class Program
    {
      static void Main(string[] args)
      {
            SayHello obj = new SayHello();
            Type type = typeof(SayHello);
            type.GetMethod("Say").Invoke(obj, new object);
            Console.ReadKey(true);
      }
    }

    class SayHello
    {
      public void Say()
      {
            Console.WriteLine("Hello World!");
      }
    }
}


这里用委托
using System;
namespace Ref
{
    delegatevoid dgtSayHello();
    class Program
    {
      static void Main(string[] args)
      {
            SayHello obj = new SayHello();
            obj.GetSayHello("SayCn")();
            Console.ReadKey(true);
      }
    }
    class SayHello
    {
      public void Say()
      {
            Console.WriteLine("Hello World!");
      }
      public void SayCn()
      {
            Console.WriteLine("世界你好!");
      }
      public void SayUs()
      {
            Console.WriteLine("Hello World!");
      }
      public dgtSayHello GetSayHello(string methodName)
      {
            switch (methodName)
            {
                case "SayCn":
                  return new dgtSayHello(this.SayCn);
                case "SayUs":
                  return new dgtSayHello(this.SayUs);
                default:
                  return new dgtSayHello(this.Say);
            }
      }

    }
}

杨林 发表于 2017-9-22 10:45:11

页面404了:o

李维强-15级 发表于 2017-9-25 05:36:02

杨林 发表于 2017-9-22 10:45
页面404了

重新贴了个出来
页: [1]
查看完整版本: c# reflection 反射 委托