Чтобы вызвать метод, определенный для классов в другой сборке, вам нужно что-то вроде этого:
Assembly assembly = Assembly.Load("OtherAssembly");
Type controlType = assembly.GetType("OtherAssembly.OtherAssemblyClass");
object control = Activator.CreateInstance(controlType);
controlType.InvokeMember("SetFullName", BindingFlags.InvokeMethod, null,
control, new object[] { "FirstName", "LastNameski" });
Это вызовет метод SetFullName
класса OtherAssemblyClass
сборки OtherAssembly
для объекта control
, используя параметры "FirstName"
и "LastNameski"
object result = controlType.InvokeMember("GetFullName",
BindingFlags.InvokeMethod, null, control, null);
Это вызовет метод с именем GetFullName
для того же объекта, который не принимает параметров (следовательно, последний null
в вызове) и возвращает строку.
Console.WriteLine(result.GetType().FullName);
Это распечатает "System.String"
Console.WriteLine(result);
Это распечатает "FirstName LastNameski"
.
в этом примере другая сборка содержит этот класс:
namespace OtherAssembly
{
public class OtherAssemblyClass
{
private string firstName;
private string lastName;
public string GetFullName()
{
return firstName + " " + lastName;
}
public void SetFullName(string first, string last)
{
firstName = first;
lastName = last;
}
}
}