카테고리 없음

[씨#] Autofac을 사용하고 서비스를 삽입 할 때 XAML 페이지에서 MainViewModel에 액세스

필살기쓰세요 2021. 2. 19. 21:02
    // register MainViewModel and Inject ILogger
    // Is this correct? Is this how you inject a service?
        builder.RegisterType<MainViewModel>()
                   .As<ILogger>()
                              .InstancePerDependency();
                              

아니오, 이것은 정확하지 않습니다. MainViewModel ILogger 등록하고 있습니다 . 재귀적이고 충돌 가능성이있는 등록.

MainVm을 그 자체로 등록해야합니다. 저는 AutoFac에 익숙하지 않지만 간단하게 생각합니다.

    builder.RegisterType<MainViewModel>();

그러나 iirc에는 .AsSelf()확장 기능도 있습니다.

그러나 builder.RegisterAssemblyTypes(assembly).As<ILogger>();또한 잘못 보입니다. 그러면 해당 어셈블리의 모든 형식 ILogger로 등록 됩니다 . 아마도 다음과 같은 것을 원할 것입니다.

   builder.RegisterAssemblyTypes(assembly)
          .Where(...)                     // optional filter
                    .AsImplementedInterfaces();
                    


출처
https://stackoverflow.com/questions/39940145