c#中接口实现类的动态调用实现
来源:互联网 发布:盖章软件在线制作 编辑:程序博客网 时间:2024/06/05 16:58
最近一个项目要实现接口的动态调用。一个接口有多个实现类,但是要在程序外(比如说配置文件或者数据库表里)定义到底应该掉用哪一个实现类,这样可以极大的提高程序的扩展性,调试也方便维护,多人同时使用一个程序时也可以根据不同的需要写自己的实现类。
下面讲具体的实现方法,这里主要用到的是反射的方法。一、首先先建一个接口IAnimal,该接口里面就一个Cry的方法。
public interface IAnimal { string Cry(); }
二、然后定义一个Cat类实现该接口:
public class Cat:IAnimal { public string Cry() { return "猫的叫声是:喵喵"; } }
再添加一个Dog类来实现该接口:
public class Dog:IAnimal { public string Cry() { return "狗的叫声是:汪汪"; } }
三、添加一个windows窗体,并且添加动态加载该接口的具体类和具体的调用方法和结果输出,如下:
其中文本框中的内容为类的具体路径,具体实现方法如下:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void bt_cat_Click(object sender, EventArgs e) { try { Type type = Type.GetType(t_cat.Text.ToString(), false); if (type == null) { MessageBox.Show("无法加载配置"); return; } var obj = Activator.CreateInstance(type); IAnimal Ia = obj as IAnimal; t_voice.Text = Ia.Cry(); } catch(Exception ex) { MessageBox.Show("加载异常"); } } private void bt_dog_Click(object sender, EventArgs e) { try { Type type = Type.GetType(t_dog.Text.ToString(), false); if (type == null) { MessageBox.Show("无法加载配置"); return; } var obj = Activator.CreateInstance(type); IAnimal Ia = obj as IAnimal; t_voice.Text = Ia.Cry(); } catch (Exception ex) { MessageBox.Show("加载异常"); } } private void bt_openform_Click(object sender, EventArgs e) { try { Type type = Type.GetType(t_form.Text.ToString(), false); if (type == null) { MessageBox.Show("无法加载配置"); return; } var obj = Activator.CreateInstance(type); Form fm = obj as Form; fm.Show(); } catch (Exception ex) { MessageBox.Show("加载异常"); } } }
这样就可以简单地实现类的动态调用:
这里同样可以实现窗体的动态加载,都是通过反射来进行查找然后通过
var obj = Activator.CreateInstance(type);
方法来进行实例化。源代码附上:
http://download.csdn.net/detail/czcl123/9475938
0 0
- c#中接口实现类的动态调用实现
- C# 动态实现接口
- 接口存在多个实现类时的动态调用
- C# 实现动态调用DLL的研究
- C#中CollectionBase类中IList接口的实现
- C#中CollectionBase类中IList接口的实现
- C#程序实现动态调用DLL的实现
- 使用Spring特性实现接口多实现类的动态调用
- 使用Spring特性实现接口多实现类的动态调用
- 使用Spring特性实现接口多实现类的动态调用
- mybatis中接口没有实现类的动态代理探究
- mybatis中接口没有实现类的动态代理探究
- C#在Unity中接口的实现
- C#接口-接口的实现
- C#接口的实现
- C#接口的实现
- C#接口的实现
- C# 调用SQL的存储过程的接口及实现
- 【灵性的觉醒】做自己人生剧的导演
- 什么是堆和栈,它们在哪儿?
- qt5.5.1的程序发布方法
- (学习笔记1)BMP位图的组成
- HTML第五章作业
- c#中接口实现类的动态调用实现
- weblogic服务器如何设置编码
- ApplePay 支付开发
- 求1*3*...*n的值
- 【NOIP2013提高组】积木大赛
- mysql TIMESTAMP详解
- 深入分析HashMap
- 第五周项目3 时间类的练习(2)
- 用html+css+js实现选项卡切换效果