码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2019-08-08 23:51:44      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:技术   需要   reac   ati   升级版   box   实现   https   ace   

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

一般的接口实现多态

定义接口

    interface Ipeople
    {
        void say();
    }

定义实现的类

  public class man : Ipeople
    {
        public void say()
        {
            MessageBox.Show("man");
        }
    }

 public class woman : Ipeople
    {
        public void say()
        {
            MessageBox.Show("woman");
        }
    }

一般实现的方法

技术图片

升级版

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

技术图片

实现类

技术图片技术图片

调用方法

   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语句

 

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

标签:技术   需要   reac   ati   升级版   box   实现   https   ace   

原文地址:https://www.cnblogs.com/lonelyxmas/p/11324355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!