Assembly a = Assembly.Load("ConsoleClient");
Object o = a.CreateInstance("Program");
Type t = a.GetType("Program");
Object[] numbers = new Object[2];
numbers[0] = 2;
numbers[1] = 3;
MethodInfo mi = t.GetMethod("add");
Console.WriteLine(mi.Invoke(o, numbers));
Console.ReadLine();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class Program
{
public int add(int a, int b)
{
return a + b;
}
}
Assembly a = Assembly.LoadFrom("ConsoleClient.dll");
Type[] types = a.GetTypes();
foreach (Type z in types)
Console.WriteLine("--> " + z);
Console.WriteLine();
Object o = a.CreateInstance("Program");
Type t = a.GetType("ConsoleClient.Program");
Object[] numbers = new Object[2];
numbers[0] = 2;
numbers[1] = 3;
MethodInfo mi = t.GetMethod("add");
Console.WriteLine(mi.Invoke(o, numbers));
//чтобы консоль мгновенно не закрылась
Console.ReadLine();
Что я делаю не так?все
Цель в том, чтобы dll подгружалась с сервера, и существовала только в оперативной памяти, поэтому подобные танцы с бубномнамек - чаще такие вещи решаются через скриптование
я неправильно выразился, под фразой "только подключение сборки" я имел в виду, как раз динамическое подключение сборки, либо через Assembly.Load, либо AppDomain.Load()+
Цель в том, чтобы dll подгружалась с сервера, и существовала только в оперативной памяти, поэтому подобные танцы с бубном.. ну начнем с того, что надо иметь правильно компилированные версии DLL для всех вероятных клиентских ОС.. это изначально выбор пути жуткого геморроя.. думаю на этом можно и закончить ))