欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c#自定义Attribute获取接口实现

程序员文章站 2022-06-18 09:55:32
一般的接口实现多态 定义接口 定义实现的类 一般实现的方法 升级版 添加自定义(这个网上好多) 实现类 调用方法 这个可以避免需要维护swich语句 ......

一般的接口实现多态

定义接口

    interface ipeople
    {
        void say();
    }

定义实现的类

  public class man : ipeople
    {
        public void say()
        {
            messagebox.show("man");
        }
    }

 public class woman : ipeople
    {
        public void say()
        {
            messagebox.show("woman");
        }
    }

一般实现的方法

c#自定义Attribute获取接口实现

升级版

添加自定义(这个网上好多)

c#自定义Attribute获取接口实现

实现类

c#自定义Attribute获取接口实现c#自定义Attribute获取接口实现

调用方法

   private static void newmethod(string tpye)
        {
            ipeople ib = null;
            var types = appdomain.currentdomain.getassemblies()
                        .selectmany(a => a.gettypes().where(t => t.getinterfaces().contains(typeof(ipeople))))
                        .toarray();
            foreach (var v in types)
            {
                var attribute = v.getcustomattributes(typeof(nameattribute), false).firstordefault();
                if (attribute != null && ((nameattribute)attribute).name == tpye)
                {
                    ib = (ipeople)v.assembly.createinstance(v.fullname);
                    break;
                }
            }
            if (ib != null) ib.say();
        }

这个可以避免需要维护swich语句