继承含泛型的父类
来源:互联网 发布:新店淘宝客 编辑:程序博客网 时间:2024/04/28 09:36
接口部分:
public interface ITestCluster{ string Text { get; set; } void SetupScripts();}
public interface ILogic{ ITestCluster TestCluster { get; set; } void Logic(); Type TestClusterType { get; }}
基本类型:
public class TestClusterBase : ITestCluster{ public string Text { get; set; } public void SetupScripts() { }}
泛型父类:
public class LogicBase<T> : ILogic where T : TestClusterBase{ public LogicBase() { } public virtual void Logic() { MessageBox.Show(this.TestCluster.Text); } internal ITestCluster TestCluster { get; set; } internal Type TestClusterType { get { return typeof(T); } } public T TestClusterT { get { return this.TestCluster as T; } }}
子类
public class TestClusterEmpty : TestClusterBase{ public string Extend { get; set; }}
public class TestClusterPower : TestClusterBase{ public string PowerExtend { get; set; }}
子类1:
public class LogicEmpty : LogicBase<TestClusterEmpty>{ public LogicEmpty() { } public override void Logic() { MessageBox.Show(string.Format("TestCluster:{0} Extend:{1}", this.TestCluster.Text, this.TestClusterT.Extend)); } }
子类2:
public class LogicPower : LogicBase<TestClusterPower>{ public LogicPower() { } public override void Logic() { MessageBox.Show(string.Format("Type:{2} TestCluster:{0} PowerExtend:{1}", this.TestCluster.Text, this.TestClusterT.PowerExtend, this.GetType().FullName)); }}
Demo:
private void button1_Click(object sender, EventArgs e){ var testClusterEmpty = new TestClusterEmpty() { Text = "testCluster Empty ", Extend = "Extend AAA" }; var testClusterPower = new TestClusterPower() { Text = "testCluster Power ", PowerExtend = "PowerExtend BBB" }; Type[] types = new Type[] { typeof(LogicEmpty), typeof(LogicPower) }; Assembly assembly = Assembly.GetExecutingAssembly(); foreach (var t in types) { var x = t.GetInterface(typeof(ILogic).FullName); if (x != null) { ILogic obj1 = (ILogic)assembly.CreateInstance(t.FullName); if (obj1.TestClusterType == typeof(TestClusterEmpty)) { obj1.TestCluster = testClusterEmpty; } else { obj1.TestCluster = testClusterPower; } obj1.Logic(); } }}
- 继承含泛型的父类
- 继承的顺序,子类覆盖继承父类的方法
- c++类的继承:私有继承,公有继承,保护继承
- java中的继承-子类继承父类的权限问题
- 类的继承 保护继承和私有继承
- C#类的继承-什么是继承
- 继承QVector----模板类的继承
- 类的一般继承与虚继承
- 创建一个继承父类的类
- 子类继承父类的一个问题
- 继承父类的两种情况
- 子类继承父类的语法规则
- 继承之子父类函数的特点
- 子类继承父类的私有属性
- 关于继承父类的问题
- Spring的父类(继承)注入
- java多态中,父类属性的继承
- 子类继承父类的static方法
- 野指针
- Delphi开发的WebService如何和Tomcat集成
- Hibernate的体系结构
- 多函数压栈过程-参数总是在call后立即恢复
- zen-cart 批量插件easy populat错误黄条Deleting of product data debris failed! ...
- 继承含泛型的父类
- web前端性能分析--实践篇
- 黑马程序员-面向对象
- fl2440的U-boot-2010.09移植(四) 添加NOR Flash启动支持
- 6、C语言中的字符串
- 对目录下文件进行简单批处理的脚本
- 周记
- sql 语句
- 进程控制理论<三>---那些年我们一起学习linux程序设计