Я пытаюсь загрузить сборку, создать экземпляр класса из этой сборки, а затем вызвать Run (), которая должна установить свойство внутри этого экземпляра.
Загрузка сборки, кажется, работает нормально, так как я могу перечислить типы, но вызываемый метод кажется неэффективным: свойство, расположенное в новом экземпляре, остается равным нулю, несмотря на тот факт, что оно должно быть установлено на что-то.
Я также пытался вызвать метод с использованием синтаксиса type.InvokeMethod (...).
Метод, который загружает сборку, вызывает конструктор и вызывает метод:
private IEntryPoint ChargerAppli(AppInfo ai)
{
string cheminAssemblies = "D:\\TFS\\OBL Microsoft\\Stages\\2010\\WPF\\Shell\\Shell\\Applications\\";
Assembly a = Assembly.LoadFile(cheminAssemblies + ai.AssemblyName);
Type type = a.GetType(ai.StartupClass);
IEntryPoint instance = Activator.CreateInstance(type) as IEntryPoint;
instance.Run();
return instance;
}
Интерфейс IEntryPoint:
public interface IEntryPoint
{
FrameworkElement HostVisual { get; set; }
void Run();
}
Реализация IEntryPoint, которую я пытаюсь загрузить, находится в новой сборке:
class Bootstrap : IEntryPoint
{
private FrameworkElement _visuel;
public Bootstrap()
{
//do some work;
this._visuel = new MainVisual();
}
public System.Windows.FrameworkElement HostVisual { get; set; }
public void Run()
{
HostVisual = this._visuel;
}
}
Чего мне не хватает?