Table of Contents

Multi-Project ViewModel Registration

In larger solutions, ViewModels are often split across multiple assemblies. This is common in hybrid applications where UI, shared components, and business logic live in different projects.

Blazing.Mvvm supports explicit multi-assembly registration so navigation and component resolution still work across the full solution.

Register ViewModels from multiple assemblies

Use RegisterViewModelsFromAssemblyContaining inside AddMvvm:

using Blazing.Mvvm;
using HybridSample.Core.ViewModels;
using HybridSample.Blazor.Core.Pages;

builder.Services.AddMvvm(options =>
{
    options.HostingModelType = BlazorHostingModelType.Hybrid;

    options.RegisterViewModelsFromAssemblyContaining<SamplePageViewModel>();
    options.RegisterViewModelsFromAssemblyContaining<IntroductionPage>();
});

This works well when you know one representative type from each assembly you want scanned.

Register assemblies directly

You can also register assemblies explicitly:

var coreAssembly = typeof(SamplePageViewModel).Assembly;
var blazorAssembly = typeof(IntroductionPage).Assembly;

builder.Services.AddMvvm(options =>
{
    options.RegisterViewModelsFromAssembly(coreAssembly, blazorAssembly);
});

Or register a collection:

var assemblies = new[] { coreAssembly, blazorAssembly };

builder.Services.AddMvvm(options =>
{
    options.RegisterViewModelsFromAssemblies(assemblies);
});

When this is useful

This pattern is especially useful when you have:

  • a core project with shared business logic and ViewModels
  • a Blazor UI project with page-specific ViewModels
  • shared UI libraries reused across multiple hosts
  • hybrid applications that mix native shell projects with Blazor content

Working examples

See the hybrid sample projects for real repository examples: