Hallo,
ich möchte gerne eine C#-Assembly von einer Anwendung aus In-Process aufrufen, deren Skriptspace (Ruby) mit nur native Win32-API-Aufrufe ermöglicht. Es ist eine eingeschränkte Version von Ruby (Bei vollwertigem Ruby würde ich einfach WIN32OLE.new aufrufen und den C#-Klassen eine COM-Schnittstelle verpassen).
Über eine in C++ geschriebene Wrapper-DLL sollte das zwar grundsätzlich klappen, aber ich hätte gerne eine generische Möglichkeit dies zu tun. So in der Art von Reflection. Hat jemand eine Idee, wie sowas zu bewerkstelligen sein könnte, ohne einen eigenen CLR-Host in C++ zu schreiben?
Wenn alle Stricke reißen, könnte ich es auch über das Microsft Script Control machen. Der C++ Wrapper würde ein Aufrufscript in VBScript erzeugen und darüber meine C#-Klassen über die COM-Dispatch-Schnittstelle aufrufen. Dieser Weg ist aber sehr hässlich und nicht besonders performant.
Objektorientiert oder prozedural?
Statische Funktionen kann man ja via IL-Manipulation für unmanaged Dll-Zugriff frei machen. Ist zwar nen böser Hack, aber dank Tool schnell und einfach.
"Boeser Hack"? Noe, vom Framework supported und nuetzlich aus meiner Sicht. Gut, es braucht einen Roundtrip mit Assembly -> IL -> Assembly, aber das ist eher eine Dummheit/ein Problem des C# Compilers..
Ich denke aber, dass der Threadstarter Zugriff auf Objekte haben will (daher Reflection als Keyword). Dafuer sehe ich keine einfache (und vor allem performante) Moeglichkeit.
Pound for pound, plutonium is about as toxic as caffeine when eaten.
Es muss prozedural sein, genau wie die Win32-API. Gibt es da ein Tool oder eine Anleitung, wie man diesen Hack anwendet?
Das würde all meine Probleme lösen. Es muss nur funktionieren. Ich komme auch mit den Datentypen String, Double und Int aus.
Super, vielen Dank!