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;
}
}
}
网友评论