一般的接口实现多态
定义接口
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# 获取进程退出代码的实现示例,包括了C# 获取进程退出代码的实现示例的使用技巧和注意事项,需要的朋友参考一下 我需要写一个程序,让这个程序知道另一个程序是否正常退出,于是就需要获取这个进程的退出代码 在程序如果需要手动退出,可以设置当前的退出代码 这时的程序运行就退出,同时退出的代码就是 -100 这和 C 语言的在 main 函数返回值一样 在 C# 如果想要实现 C 语言的
本文向大家介绍echarts实现词云自定义形状的示例代码,包括了echarts实现词云自定义形状的示例代码的使用技巧和注意事项,需要的朋友参考一下 安装 词云安装官网 https://github.com/ecomfe/echarts-wordcloud 下面是一个小鸟形状的词云,可以在iconfont中下载(最好是填充的)图案,转为base64,就可以用来生成有图案的词云了 运行效果 以上就是本
本文向大家介绍Java实现的自定义迭代器功能示例,包括了Java实现的自定义迭代器功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java实现的自定义迭代器功能。分享给大家供大家参考,具体如下: 编写自己的Iterator,实现Iterator接口,这里多说一句,实现Iterable后,可以用“foreach”循环遍历你的对象。 执行结果: 希望本文所述对大家java程序设计有所帮
我是Spring Boot的新手,所以我有几个基本问题。 当我们定义一个扩展JpaRepostory的Repostory接口时 这些方法可以从 Service 类调用(我们可能甚至不需要提及这两个方法)。到目前为止,一切都很好。 问题: > 方法是如何定义的?它在幕后是如何被称为的? 如果我们想用原生SQL添加一个自定义方法< code>findUserAction呢?在这种情况下,我们需要在<
歌曲对象的类文件: 类文件,用于加载包含20首歌曲的ArrayList: 下面是主要活动java文件:
EasySwoole支持自定义添加一个socket资源参与系统底层的事件调度循环,添加事件循环与swoole原生的EventLoop一致,这里只做简单介绍,扩展应用请参照swoole文档 // 函数原型 bool swoole_event_add(int $sock, mixed $read_callback, mixed $write_callback = null, int $flags =