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

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#自定义Attribute获取接口实现相关的知识,希望对你有一定的参考价值。

原文: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获取接口实现的主要内容,如果未能解决你的问题,请参考以下文章

C#中利用Attribute实现AOP

C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)

.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法

C# 索引器,实现IEnumerable接口的GetEnumerator()方法

android自定义serviceloader接口隔离及获取自定义properties参数配置

C# 8: 默认接口方法