Files
2026-10-27 14:35:03 +08:00

65 lines
1.4 KiB
C#

using Autofac;
using MAX.Core;
using MAX.Core.Autofac;
using MAX.Core.DependencyInjection;
using MAX.Core.Logger;
using MAX.Core.Reflections;
using MAX.Framework.Logger;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
namespace MAX.Framework;
public class Startup : IStartup
{
public int Priority => int.MaxValue - 1;
public void Initialize()
{
}
public void Register(ContainerBuilder builder)
{
//builder.RegisterInstance(NLogger.Instance).As<ILoggerFacade>().SingleInstance();
#region 注册所有IOC接口
Assembly[] assemblies = AppTypeFinder.Assemblies.ToArray();
Type typeSingleton = typeof(ISingletonDependency);
builder.RegisterAssemblyTypes(assemblies)
.Where(a =>
typeSingleton.IsAssignableFrom(a)
&& a.IsClass
&& !a.IsAbstract
&& !typeof(INoDependency).IsAssignableFrom(a)
)
.AsImplementedInterfaces()
.AsSelf()
.PropertiesAutowired(new CustomPropertySelector())
.SingleInstance();
Type typeTransient = typeof(ITransientDependency);
builder.RegisterAssemblyTypes(assemblies)
.Where(a =>
typeTransient.IsAssignableFrom(a)
&& a.IsClass
&& !a.IsAbstract
&& !typeof(INoDependency).IsAssignableFrom(a)
)
.AsImplementedInterfaces()
.AsSelf()
.PropertiesAutowired(new CustomPropertySelector())
.InstancePerDependency();
#endregion
}
}