어셈블리를로드하고 해당 어셈블리에서 클래스를 인스턴스화하려고 시도한 다음이 인스턴스 내부에서 속성을 설정해야하는 Run()을 호출하려고합니다.런타임에 어셈블리를로드 할 때 인스턴스에서 호출 된 메서드가 비효율적 인 것 같습니다.
형식을 나열 할 수 있기 때문에 어셈블리를로드해도 문제가없는 것 같지만 호출 된 메서드는 효과가없는 것으로 보입니다. 새 인스턴스에있는 속성은 null로 설정되어 있으며 설정해야한다는 사실을 알립니다. 무언가에.
또한 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();
}
에 위치한 I로드하기 위해 노력하고있어
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;
}
}
어떤 누락 수가 있습니까?
이이 문제를 해결하기 위해 할 수있는 일 : 1) Debug.Write 문을 포함)은 VS.NET 2에서 무엇을보고 같은 코드를 작성하지만, 반사없이 직접 어셈블리를 참조하고 작동하는지 확인 당신이 예상했던대로. – Vitaly