reactiveui/splat

[BUG] Usage of Autofac as resolver never load assembly modules in UWP

ushenkodmitry opened this issue · 4 comments

Please note although we can't commit to any timeline, priority will be given to those who are Contributors to the project.

If this is a question please ask on StackOverflow.

Describe the bug
The code below doesn't load any of modules defined within executing assembly.

        protected override void OnLaunched(LaunchActivatedEventArgs e)
        {
            var assembly = Assembly.GetExecutingAssembly();

            var builder = new ContainerBuilder();
            builder.RegisterAssemblyModules(assembly);
            builder.UseAutofacDependencyResolver();
            ...
        }

Seems like a regression as the same exactly code was working about a week ago.

Steps To Reproduce

  1. Create new UWP app
  2. Add the code above
  3. Define a module and add a breakpoint in the Load method
  4. Run
  5. See that breakpoint is not hitting

Expected behavior
Breakpoint hitting.

Environment(please complete the following information):

  • OS: Windows 10
  • Version [e.g. 22]
  • Device: PC

Additional context
Splat.Autofac 9.5.49

Take a look here

https://github.com/reactiveui/splat/blob/main/src/Splat.Autofac/README.md

There's one or two extra steps

GitHub
Makes things cross-platform. Contribute to reactiveui/splat development by creating an account on GitHub.

Thank you. But it didn't help. Here is my code:

            var assembly = Assembly.GetExecutingAssembly();

            var builder = new ContainerBuilder();
            builder.RegisterType<MainViewModel>().AsSelf().As<IScreen>().SingleInstance();
            builder.RegisterAssemblyModules(assembly);
            var resolver = builder.UseAutofacDependencyResolver();
            resolver.InitializeReactiveUI();
            builder.RegisterInstance(resolver);

No module loaded, MainViewModel can not be resolved via Locator.Current.GetService(). The method returns null;

Fixed on my side, sorry

            var assembly = Assembly.GetExecutingAssembly();

            var builder = new ContainerBuilder();
            builder.RegisterAssemblyModules(assembly);
            var resolver = builder.UseAutofacDependencyResolver();
            resolver.InitializeReactiveUI();
            builder.RegisterInstance(resolver);
            resolver.SetLifetimeScope(builder.Build());

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.