65 lines
1.4 KiB
C#
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
|
|
|
|
}
|
|
}
|