首页 > Windows开发 > 详细

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

时间:2019-08-09 00:54:23      阅读:164      评论:0      收藏:0      [点我收藏+]
原文: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获取接口实现

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!