Reflection Visual C++ .NET

#include "stdafx.h"
using namespace System;
using namespace System::Reflection;
ref class Reflector
{
   public:
   void LoadAndReflect(String^ assemblyFileName)
   {
      Assembly^ assembly = Assembly::LoadFrom(assemblyFileName);
      array^ types = assembly->GetTypes();
      for each (Type^ t in types)
      {
         Console::WriteLine(t->ToString());
         array^ methods = t->GetMethods();
         for each (MethodInfo^ method in methods)
         {
             Console::Write("   {0} {1}(", method->ReturnType->ToString(),method->Name);
             array^ params = method->GetParameters();
             for (int i = 0; i < params->Length; i++)
             {
                 ParameterInfo^ param  = params[i];
                 Console::Write("{0} {1}",  param->ParameterType->ToString(), param->Name);
                 if (i < params->Length - 1)
                    Console::Write(", ");
             }
             Console::WriteLine(")");
         }
      }
   }
};
int main(array^ args)
{
   Reflector^ r = gcnew Reflector();
   for each (String^ s in args)
   {
      Console::WriteLine("Reflection on {0}", s);
      r->LoadAndReflect(s);
   }
}