主题:如何根据 Type 创建一个相应类型的对象?
刚刚接触 .net, 很多基本概念还没搞清。
class A{};
A^ obj_sample = gcnew A(); // C++/CLI
//如果我能获得 obj_sample->GetType(), 如何能根据这个 Type 类型再创建另一个该Type 类型的对象?
//尽管我可以使用:
Object^ myobject = Activator::CreateInstance(obj_sample->GetType());
//但是 myobject 仍然是 Object 类型的。而我需要一个 A 类型的。否则 A 中定义的成员不能访问,编译器不通过,仍然当作 Object 类型。
// 正如
A^ myobject = (A)Activator::CreateInstance(obj_sample->GetType());
//那样, 但是我只能在运行时动态获知 obj_sample 的类型,没法固定成A 类型。
//--------------------------------------
那么,怎么才能根据 obj_sample->GetType() 得到的Type 创建一个对象呢? 要求这对象不仅是"存在的"相应类型的指针,也确实能被编译器认定为相应类型。
先谢过了。被这个问题困了很久,请高手赐教了。
class A{};
A^ obj_sample = gcnew A(); // C++/CLI
//如果我能获得 obj_sample->GetType(), 如何能根据这个 Type 类型再创建另一个该Type 类型的对象?
//尽管我可以使用:
Object^ myobject = Activator::CreateInstance(obj_sample->GetType());
//但是 myobject 仍然是 Object 类型的。而我需要一个 A 类型的。否则 A 中定义的成员不能访问,编译器不通过,仍然当作 Object 类型。
// 正如
A^ myobject = (A)Activator::CreateInstance(obj_sample->GetType());
//那样, 但是我只能在运行时动态获知 obj_sample 的类型,没法固定成A 类型。
//--------------------------------------
那么,怎么才能根据 obj_sample->GetType() 得到的Type 创建一个对象呢? 要求这对象不仅是"存在的"相应类型的指针,也确实能被编译器认定为相应类型。
先谢过了。被这个问题困了很久,请高手赐教了。