刚刚接触 .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 创建一个对象呢? 要求这对象不仅是"存在的"相应类型的指针,也确实能被编译器认定为相应类型。

先谢过了。被这个问题困了很久,请高手赐教了。