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#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)
.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法
C# 索引器,实现IEnumerable接口的GetEnumerator()方法