#c# #delphi #dll #runtime #jedi
Вопрос:
я не хочу создавать tlb, обновлять ссылки и т. Д., Поэтому я загружаю .net dll во время выполнения, я могу вызывать и использовать нестатические классы и методы, подобные этому:
procedure TForm1.Button1Click(Sender: TObject); var Host: TJclClrHost; Obj: OleVariant; result: string begin Host := TJclClrHost.Create('v4.0.30319'); Host.Start(); Obj := Host.DefaultAppDomain .CreateInstance('DLLNAME', 'NAMESPACE.INSIDE.CLASS.THAT.I.WANT') .UnWrap(); result:= Obj4.lt;MethodNamegt;(Parameters...); .... end;
и это творит чудеса для нестатических методов….статические методы я не могу понять, как это сделать с помощью JEDI/jcl
как я вызываю статический класс/метод из delphi, используя jed/jcl, или если есть другой способ сделать это во время выполнения, не стесняйтесь, скажите мне, я просто не хочу делать ссылки, генерировать tlbs и т. Д., Просто поместите dll в папку и используйте.
пример статического класса в dll .net:
using System; using System.Text; using System.Security.Cryptography; using System.IO; using System.Linq; using System.Runtime.InteropServices; namespace DLLSTATIC.SOMESUBNAME { [ComVisible(true)] [ClassInterface(ClassInterfaceType.AutoDual)] [ProgId("DLLSTATIC.SOMESUBNAME.staticclass")] public static class staticclass { [ComVisible(true)] public static string test123(string param) { return "test1234"; } } }
ps. я объявляю com видимым, но я не буду использовать эту библиотеку dll в качестве COM