美文网首页
根据类型创建对象

根据类型创建对象

作者: 价值投机168 | 来源:发表于2019-11-01 14:31 被阅读0次
 class Program
{
    static void Main(string[] args)
    {
        /**********第一种***************/
        var types = Assembly.GetExecutingAssembly().GetTypes();//获取程序集的所有的类型
        List<Type> ltypes = new List<Type>();
        foreach (var item in types)
        {
            if (item.BaseType == typeof(Parent))//将Parent的子类型都放到list里面
            {
                ltypes.Add(item);
            }
        }

        object cc = Activator.CreateInstance(ltypes[0]);//根据类型,创建一个对象
        Console.WriteLine("/**********第一种***************/");
        Console.WriteLine(cc.ToString());//打印对象的内容

        /**********第二种***************/
        ltypes = new List<Type>();
        foreach (var item in types)
        {
            //if (item.GUID == typeof(Test).GUID) //得到一个具体的类的对象,要这样使用
            if(item == typeof(Test))//这样也行
            {
                ltypes.Add(item);
            }
        }

        cc = Activator.CreateInstance(ltypes[0]);//根据类型,创建一个对象
        Console.WriteLine("/**********第二种***************/");
        Console.WriteLine(cc.ToString());//打印对象的内容

        /**********第三种***************/
        Console.WriteLine("/**********第三种***************/");
        Test ttt = new Test();
        cc = Activator.CreateInstance(ttt.GetType());//根据类型,创建一个对象
        Console.WriteLine(cc.ToString());//打印对象的内容

        cc = Activator.CreateInstance(typeof(Test));//根据类型,创建一个对象
        Console.WriteLine(cc.ToString());//打印对象的内容

        Console.WriteLine(ttt.GetType().GUID == typeof(Test).GUID);//true

        Console.ReadKey();
    }
}

class Parent
{
    public override string ToString()
    {
        return "Parent";
    }
}

class Test : Parent
{
    public int aa = 100;
    public string cc = "test my";

    public override string ToString()
    {
        return this.aa + ":" + this.cc;
    }
}

}

相关文章

  • 根据类型创建对象

    }

  • JVM实战 - 对象实例化

    Java是面向对象的静态强类型语言,声明并创建对象的代码很常见,根据某个类声明一个引用变量指向被创建的对象,并使用...

  • JS设计模式—工厂模式(Factory Pattern)

    什么是工厂模式? 工厂模式是一种 创建模式,用来解决创建对象的问题。根据参数类型,通过调用工厂方法来创建不同类型的...

  • c++基础(创建/实例化对象)

    创建一个对象,根据不同创建方式可以让对象存在于栈或堆内存不同位置,不同类型内存表示对象的声明周期的不同,在栈中对象...

  • JavaScript基础专题之new实例(八)

    定义 根据MDN定义: new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一 举个例子:...

  • oracle--创建和管理表

    创建和管理表 常见的数据库对象 命名规则: 一、创建表 语法: 数据类型 行地址 rowid 可以根据rowid查...

  • 可变数组和不可变数组

    OC 的数组 可以存储不同类型的对象 ,OC 的数组只能存储对象 NSArray 1.快速创建数组 2.根据已有...

  • iOS多线程之NSOperation

    NSOperation是Apple基于GCD的封装,面向对象,抽象层次更高,使用简单。我们只需根据任务类型创建合适...

  • 第二十章 原型模式(Prototype)

    通过给出一个原型对象来指明所要创建的对象的类型,然后复用这个原型对象的办法创建更多同类型的对象。(原型实例指定创建...

  • Boolan网——C++微专业第二周学习笔记

    一、“对象创建”模式该类型模式的定义为:通过“对象创建”模式绕开直接new一个具体的类型,来避免对象创建(new)...

网友评论

      本文标题:根据类型创建对象

      本文链接:https://www.haomeiwen.com/subject/uzifbctx.html