Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- WebClient webClient = new WebClient();
- byte[] assemblyBytes = webClient.DownloadData("https://mysite.com");
- var assembly = Assembly.Load(assemblyBytes);
- var types = assembly.DefinedTypes;
- class myClass
- {
- public static int GetSum(int arg)
- {
- return arg;
- }
- public static int GetNum(int arg)
- {
- return arg;
- }
- public static int GetId(int arg)
- {
- return arg;
- }
- }
- var type = assembly.GetType("Namespace.TypeName");
- var method = type.GetMethod("StaticMethod");
- var result = method.Invoke(null, new object[] { param1, param2 });
- // интерфейс в вашей программе
- public interface IRemote
- {
- int DoSomething(string param1, int param2);
- }
- // его реализация в скачиваемой длл, она должна иметь референс на вашу программу
- public class RemoteClass : IRemote
- {
- public int DoSomething(string param1, int param2)
- {
- Console.WriteLine(param1);
- }
- }
- var type = assembly.GetType("Namespace.RemoteClass");
- var remote = (IRemote)Activator.CreateInstance(type);
- remote.DoSomething("qwerty", 100);
- WebClient webClient = new WebClient();
- byte[] assemblyBytes = webClient.DownloadData("https://mysite.com");
- var assembly = Assembly.Load(assemblyBytes);
- // получим тип (мы знаем его имя - myClass)
- Type type = assembly.GetType("myClass");
- // создадим экземпляр объекта заданного типа
- var obj = Activator.CreateInstance(type);
- // вызовем метод из полученного экземпляра у заданного типа
- type.InvokeMember(
- "GetSum",
- BindingFlags.Public | BindingFlags.Static | BindingFlags.InvokeMethod,
- null,
- obj,
- new Object[] {5}
- );
- void Foo()
- {
- AppDomain.CurrentDomain.AssemblyResolve += ...;
- myClass.getId(0);
- }
- void Foo()
- {
- AppDomain.CurrentDomain.AssemblyResolve += ...;
- Bar();
- }
- void Bar()
- {
- myClass.getId(0);
- }
Add Comment
Please, Sign In to add comment