.NET Core 1.0,枚举所有实现基类的类

Bra*_*don 6 c# .net-core asp.net-core asp.net-core-1.0

我正在努力将ASP.NET项目迁移到RC2.我正在使用AutoFac来尝试枚举实现AutoMapper Profile基类的类来设置我的所有映射配置文件,而无需显式调用它们.以前在旧版本的ASP.NET中(甚至在RC1中)我能够使用以下代码:

public class AutoMapperModule : Module
{

    protected override void Load(ContainerBuilder builder)
    {

        builder.RegisterAssemblyTypes().AssignableTo(typeof(Profile)).As<Profile>();

        builder.Register(context =>
        {
            var profiles =
               AppDomain.CurrentDomain.GetAssemblies()
               .SelectMany(IoC.GetLoadableTypes)
               .Where(t => t != typeof(Profile) && t.Name != "NamedProfile" && typeof(Profile).IsAssignableFrom(t));

            var config = new MapperConfiguration(cfg =>
            {
                foreach (var profile in profiles)
                {
                    cfg.AddProfile((Profile)Activator.CreateInstance(profile));
                }
            });
            return config;
        })
        .AsSelf()
        .As<IConfigurationProvider>()
        .SingleInstance();

        builder.Register(c => c.Resolve<MapperConfiguration>().CreateMapper(c.Resolve)).As<IMapper>().InstancePerLifetimeScope();
        builder.RegisterType<MappingEngine>().As<IMappingEngine>();

    }
}
Run Code Online (Sandbox Code Playgroud)

这非常有效,直到我尝试使用新的netcoreapp1.0框架将我的项目转换为RC2,除了现在我在AppDomain上收到设计时错误,声明"AppDomain在当前上下文中不存在".我已经看到了一些关于使用ILibraryManager或DependencyContext来做到这一点的建议,但我无法弄清楚如何使其中任何一个工作.有什么建议?

svi*_*ick 4

.Net Core 目前(1.0 RTM)不支持AppDomain.GetAssemblies()或类似的 API。很可能会在 1.1 中支持它。

在那之前,如果您需要此功能,您将需要坚持使用net452(即.Net Framework)而不是netcoreapp1.0.