问:在C++中能用.NET中的反射技术么?

来源:百度知道 编辑:UC知道 时间:2024/06/01 05:29:26
现在的仿真软件是vs2005,而创建的是一个C++的工程,其中需要用到.NET中的反射来动态
的创建对象,就是那个什么assembly.load("--").createinstance("--")语句,这样能实
现么?如果能的话,是不是要在vs2005中做一些什么设置呢?还是说不能创建C++的工程,
只能是C#?
我在C++里仿了以下,开头的那句using System.Reflection就编译不过了,说是找不到Sy
stem和Reflection这样的关键字吧,好像。
是不是应该要加载什么库啊?如果是,那这个库又是什么呢?
刚刚接触C++,很多不懂。
还是拜托各位高手指点迷津吧,先在此谢过了。
谢谢
那么在CLR项目里的反射生成对象的语句是不是和.net中的一样呢 ?比如说我写的是(class A)assembly::Load("XXX")::CreateInstance("XXX.xxxx");它会报错,一是CreateInstance不是一个公共函数,二是说无法将assembly转化成class A格式。

如果熟悉C#的话就用C#吧,
如果必须用C++也可以,但是用的不是ISO C++,你可以考虑用C++/CLI。
新建项目的时候选C++/CLI项目。
当然C++/CLI和ISO C++还是有很大不同的。

http://msdn.microsoft.com/zh-cn/library/ky3942xh(VS.80).aspx

using namespace System;
using namespace System::Collections;
using namespace System::Reflection;
int main()
{
// You must supply a valid fully qualified assembly name.
Assembly^ SampleAssembly = Assembly::Load
( "SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3" );
array<Type^>^ Types = SampleAssembly->GetTypes();

// Display all the types contained in the specified assembly.
IEnumerator^ myEnum = Types->GetEnumerator();
Type^ oType;
while ( myEnum->MoveNext() )
{
oType = safe_cast<T