DI에 대한 지식이 매우 제한적입니다. 솔루션의 다른 모든 곳에서 Microsoft Extension Dependency Injection이 사용 된 솔루션에서 WinForm 프로젝트를 개발 중입니다.C#의 WinForms에서 Microsoft Extension Dependency Injection 사용
내가 MainForm의 생성자에 의존 관계 (dependencies)를 전달해야
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
난에 DI를 사용하려고 : Main 메서드에서
public partial class MainForm : Form
{
public MainForm(ISomeThing someThing)
{
}
}
, MainForm의 인스턴스는 방법을 실행에 전달된다 서비스 제공자를 통해 Mainform 인스턴스를 인스턴스화하십시오.
private static IServiceProvider ServiceProvider { get; set; }
여기에 객체를 보내고 다음과 같이 다음
static void ConfigureServices()
{
var services = new ServiceCollection();
services.AddTransient<ISomeThing, SomeThing>();
ServiceProvider = services.BuildServiceProvider();
}
그리고 ConfigureServices()
전화를 Main()
에 다음과 같이
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ConfigureServices();
Application.Run(ServiceProvider.GetService(MainForm));
}
을 그러나, 나는 컴파일 오류가 발생합니다 : "MainForm이 유효하지 않은 유형이다 주어진 상황 "
에 나는 SimpleInjector 또는 Unity 를 사용하여 유사한 접근 방식을 사용하는 다음 링크를 발견하지만 N 할 이 종류의 DI로 이것을 어떻게 사용하는지 알고 있습니까? 아니면 다른 DI를 사용해야합니까?
감사
감사합니다. 나는 당신의 제안에 따라 이것을 사용했다. var form = (MainForm) ServiceProvider.GetService (typeof (MainForm)); Application.Run (form); 그러나 양식 객체는 null입니다. 제발 할 수 있습니다 –
@AminMerati : 당신의 ServiceProvider에 추가해야합니다. – SLaks
도움을 주셔서 감사합니다, 지금 일했습니다! –