如何在使用一次Unity.Mvc5注册的所有服务

问题描述 投票:0回答:1

请帮我在一次使用Unity.Mvc5注册的所有服务和信息库。

现在,我使用下面的场景。但在此我必须注册每一个服务和存储库统一容器。

有没有办法通过扫描组件(如通过StructureMap或拉马尔提供)或者别的东西来注册的所有服务和信息库。

提前致谢 :)。

DependencyResolver.SetResolver(new UnityDependencyResolver(container));
container.RegisterType<IAbcRepository, AbcRepository>();
container.RegisterType<IAbcService, AbcService>();
dependency-injection unity-container dependency-resolver
1个回答
0
投票

我发现这里的一个问题的解决方案。下面的代码工作正常。

还有就是这个缺点,任何并将在未来产生任何问题?或报名,除了这一切存储库和服务的任何最好的方法?

public static class UnityConfig
    {
        public static void RegisterComponents()
        {
            var container = new UnityContainer();

            DependencyResolver.SetResolver(new UnityDependencyResolver(container));
            // container.RegisterType<IAbcRepository, AbcRepository>();
            // container.RegisterType<IAbcService, AbcService>();

            container.RegisterTypes(AllClasses.FromAssemblies(typeof(Repository).Assembly), WithMappings.FromAllInterfaces, GetName, GetLifetimeManager);
            container.RegisterTypes(AllClasses.FromAssemblies(typeof(Service).Assembly), WithMappings.FromAllInterfaces, GetName, GetLifetimeManager);
        }


        static bool IsNotificationHandler(Type type)
        {
            return type.GetInterfaces().Any(x => x.IsGenericType);
        }

        static LifetimeManager GetLifetimeManager(Type type)
        {
            return IsNotificationHandler(type) ? new ContainerControlledLifetimeManager() : null;
        }

        static string GetName(Type type)
        {
            return IsNotificationHandler(type) ? string.Format("HandlerFor" + type.Name) : string.Empty;
        }
    }

这个多少钱安全的一个大的应用程序中使用?

© www.soinside.com 2019 - 2024. All rights reserved.