c# 以类名为参创建父类相同的类的实例代码

以下为例:

Form1,Form2,Form3……继承自Form,可以通过Form f=new Form1();等建立Form子类的实例,如果太多子类,希望通过传递一个参数,比如子类类名就可以建立实例,有什么办法?

方法一:利用反射

string str=“命名空间.Form1(Form2……)”;
Type t=Type.GetType(str);
Form f=Activator.CreateInstance(t);

这样就可以实现想要的了,str为变量,当然,传参时需要加上命名空间

方法二:利用泛型

T CreateForem<T>() where T : Form, new()//这里的new用作约束
    {
      return new T();
    }

然后可以调用Form f=CreateForm<参数>();//参数为Form1,Form2,Form3等。

以上这篇c# 以类名为参创建父类相同的类的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C#中子类调用父类的实现方法

    本文实例讲述了C#中实现子类调用父类的方法,分享给大家供大家参考之用.具体方法如下: 一.通过子类无参构造函数创建子类实例 创建父类Person和子类Student. public class Person { public Person() { Console.WriteLine("我是人"); } } public class Student : Person { public Student() { Console.WriteLine("我是学生"); } }

  • c# 以类名为参创建父类相同的类的实例代码

    以下为例: Form1,Form2,Form3--继承自Form,可以通过Form f=new Form1();等建立Form子类的实例,如果太多子类,希望通过传递一个参数,比如子类类名就可以建立实例,有什么办法? 方法一:利用反射 string str="命名空间.Form1(Form2--)"; Type t=Type.GetType(str); Form f=Activator.CreateInstance(t); 这样就可以实现想要的了,str为变量,当然,传参时需要加上命名空

  • JS创建事件的三种方法(实例代码)

    1.普通的定义方式 <input type="button" name="Button" value="确定" onclick="Sfont=prompt('请在文本框中输入红色','红色',' 提示框 '); if(Sfont=='红色'){ form1.style.fontFamily='黑体'; form1.style.color='red'; }" /> 这是最常见的一种定义方式,直接将JS事件定义在需要的

  • 数据结构 双向链表的创建和读取详解及实例代码

    数据结构 双向链表的创建和读取 双向链表是为了满足更加方便的查找前驱,而付出空间的代价的一个数据结构.双向链表的节点定义如下: typedef struct node { int x; struct node *prior,*next; }DLNode; 双向链表的空间结构如下图所示: 双向链表的创建如下: //创建双向链表 DLNode *create_DList() { DLNode *p,*h,*l; int n,i,x; h = (DLNode *)malloc(sizeof(DLNod

  • shell批量创建文件并重新命名的实例代码

    目录 一.问题 二.解决 1.批量删除文件 2.文件更名 三.总结 一.问题 使用for循环批量创建10个文件,从linux-1到linux-10.并将上述文件的前缀改为unix. 二.解决 1.批量删除文件 批量创建命名从linux-1到linux-10的文件. (1)方法一:常规方法 #使用for循环批量创建10个文件 linux-1到linux-10 #!/bin/sh [ ! -d $PWD/file ] && mkdir -p $PWD/file && exit

  • 详解C# 利用反射根据类名创建类的实例对象

    "反射"其实就是利用程序集的元数据信息. 反射可以有很多方法,编写程序时请先导入 System.Reflection 命名空间. 1.假设你要反射一个 DLL 中的类,并且没有引用它(即未知的类型): Assembly assembly = Assembly.LoadFile("程序集路径,不能是相对路径"); // 加载程序集(EXE 或 DLL) dynamic obj = assembly.CreateInstance("类的完全限定名(即包括命名空

  • 浅谈java继承中是否创建父类对象

    1. 调用父类构造方法是真的,但是根本没有创建父类对象,只不过是调用父类构造方法来初始化属性. 如果说调用父类构造方法就等于创建父类对象,那就真的无稽之谈. new指令开辟空间,用于存放对象的各个属/性引用等,反编译字节码你会发现只有一个new指令,所以开辟的是一块空间,一块空间就放一个对象. 然后,子类调用父类的属性,方法啥的,那并不是一个实例化的对象. 在字节码中子类会有个u2类型的父类索引,属于CONSTANT_Class_info类型,通过CONSTANT_Class_info的描述可以

  • Python线程创建和终止实例代码

    python主要是通过thread和threading这两个模块来实现多线程支持. python的thread模块是比較底层的模块,python的threading模块是对thread做了一些封装,能够更加方便的被使用.可是python(cpython)因为GIL的存在无法使用threading充分利用CPU资源,假设想充分发挥多核CPU的计算能力须要使用multiprocessing模块(Windows下使用会有诸多问题). 假设在对线程应用有较高的要求时能够考虑使用Stackless Pyt

  • EasyUI创建人员树的实例代码

    最近做了一个树状的下拉列表,在这里记录一下,以后可以直接使用 项目中的树状下拉列表是用来选择人员用的,具体实现展示如下: 先说一说功能,左边的人员数是提供选人的,当点击中间的按钮,选中的人员会直接移到右边,如果要删除已选中的人员,只需要双击右边人的姓名即可,点击确定进行集体的业务逻辑操作,一般就是新增人员到某一个表中. 我们再来看看这个DIV的具体代码,由于项目中在多个地方都使用到了这个人员树,所以我把这个DIV抽象出来当作一个公共的jsp页面.如需调用,只需要include这个jsp即可 us

  • SpringBoot创建JSP登录页面功能实例代码

    添加JSP配置 1.pom.xml添加jsp解析引擎 <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.s

  • MyBatis创建存储过程的实例代码_动力节点Java学院整理

    所需要用到的其他工具或技术: 项目管理工具 : Maven 测试运行工具 : Junit 数据库 : Derby 本节需要用到的有2部分,第一部分是如何在Derby中创建存储过程,第二部分是如何在Mybatis中调用存储过程 一. 在Derby中创建存储过程 在Eclipse中创建一个新的普通Java项目命名为Test_Store_Procedure 在com.bjpowernode.practice包下创建一个Class命名为StoreProcedureOperationClass.class

随机推荐