使用
在项目的启动文件中创建Services,将Services作为容器 把服务注册到容器中
internal sealed class Program
{
// Initialization code. Don't use any Avalonia, third-party APIs or any
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
// yet and stuff might break.
public static IServiceProvider Services { get; set; }
[STAThread]
public static void Main(string[] args) => BuildAvaloniaApp()
.With(new FontManagerOptions
{
FontFallbacks = new[]
{
new FontFallback
{
FontFamily = new FontFamily("Microsoft YaHei")
}
}
})
.StartWithClassicDesktopLifetime(args);
// Avalonia configuration, don't remove; also used by visual designer.
public static AppBuilder BuildAvaloniaApp()
{
Services = ConfigureServices();
return AppBuilder.Configure<App>()
.UseManagedSystemDialogs()
.UsePlatformDetect()
.With(new Win32PlatformOptions())
.LogToTrace().UseReactiveUI();
}
private static IServiceProvider ConfigureServices()
{
var services = new ServiceCollection();//创建容器
services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblies(Assembly.GetExecutingAssembly()));//注入MediatR服务
if (services.Count((ServiceDescriptor x) => x.ServiceType == typeof(IBus)) == 0)
{
services.AddScoped<IBus, Bus>();//注入总线服务
}
return services.BuildServiceProvider();
}
}