using Autofac;
using FreeSql;
using System;
using System.Collections.Generic;
using System.Collections.Concurrent;
using System.Linq.Expressions;
using System.Reflection;
using System.Linq;
public static class FreeSqlRepositoryAutofacExtenssions {
///
/// 注册 FreeSql.Repository 包括 泛型、继承实现的仓储
///
///
/// 全局过滤设置
/// 继承实现的仓储,所在的程序集
public static void RegisterFreeRepository(this ContainerBuilder builder, Action globalDataFilter = null, params Assembly[] assemblies) =>
RegisterFreeRepositoryPrivate(builder, globalDataFilter, assemblies);
static void RegisterFreeRepositoryPrivate(ContainerBuilder builder, Action globalDataFilter, params Assembly[] assemblies) {
Utils._globalDataFilter = globalDataFilter;
builder.RegisterGeneric(typeof(GuidRepository<>)).As(
typeof(GuidRepository<>),
typeof(BaseRepository<>),
typeof(IBasicRepository<>),
typeof(IReadOnlyRepository<>)
).OnActivating(a => {
//Utils.SetRepositoryDataFilter(a.Instance);
}).InstancePerDependency();
builder.RegisterGeneric(typeof(DefaultRepository<,>)).As(
typeof(DefaultRepository<,>),
typeof(BaseRepository<,>),
typeof(IBasicRepository<,>),
typeof(IReadOnlyRepository<,>)
).OnActivating(a => {
//Utils.SetRepositoryDataFilter(a.Instance);
}).InstancePerDependency();
builder.RegisterAssemblyTypes(assemblies).Where(a => {
return typeof(IRepository).IsAssignableFrom(a);
}).InstancePerDependency();
}
}