разработка компилятора для .NET

Я разрабатываю простой компилятор для .Net, в C ++, но у меня проблемы с моей системой включения, поэтому, похоже, не нашел способа узнать, какой метод я вызываю из dll, если это void, string, int …
Итак, мой включаемый системный вызов. NET DLL вызова

@include System
@include System:Windows:Forms

когда будет генерировать код, нужно знать, что это за метод …
Интересно, кто-нибудь знает способ получить тип методов, без использования инструментов .net

Один из способов, которым я подумал об этом: создать приложение на C # или другом языке .net для генерации TXT и этого txt, содержащего имена методов и их правильный тип, и во время компиляции я несу этот txt и пойман на время компиляции тип метода

Но я хочу знать, есть ли другой путь.


Об этой программе, о которой я говорил, это:

using namespace System;
using namespace System::IO;
using namespace System::Reflection;

ref class Reflector
{
public:
void LoadAndReflect(String^ assemblyFileName)
{
Assembly^ assembly = Assembly::Load(assemblyFileName);
array<Type^>^ types = assembly->GetTypes();
StreamWriter^ sw = gcnew StreamWriter("mscorlib.txt");

for each(Type^ t in types)
{
array<MethodInfo^>^ methods = t->GetMethods();

for each(MethodInfo^ method in methods)
{
String^ base = method->ReturnType->ToString();
array<String^>^ auxBase = base->Split('.');
if(auxBase->Length > 1)
sw->WriteLine(String::Format("{0} <::> {1}", auxBase[1], method->Name));
else
sw->WriteLine(String::Format("{0} <::> {1}", auxBase[0], method->Name));
}
}
sw->Close();
}
};

int main(array<System::String ^> ^args)
{
Reflector^ ref = gcnew Reflector();

Console::WriteLine("Reflection on {0}", "mscorlib.dll");
ref->LoadAndReflect("mscorlib.dll");
return 0;
}

И во время компиляции я открываю этот текст и получаю тип метода

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector