我正在尝试使用 Unity Registration by Convention 功能。
我不知道如何从特定的程序集/项目文件中注册以“Repository”结尾的文件。
container.RegisterTypes(
AllClasses.FromAssembliesInBasePath(),
WithMappings.FromMatchingInterface,
WithName.Default,
WithLifetime.ContainerControlled);
我只从 MSDN 博客中找到了这个示例(https://blogs.msdn.microsoft.com/agile/2013/03/12/unity-configuration-registration-by-convention/ https://blogs.msdn.microsoft.com/agile/2013/03/12/unity-configuration-registration-by-convention/)帖子,据我了解,这将搜索所有项目/程序集,并查找默认命名约定文件 Class 和 IClass。
我的解决方案中有一个名为 CManager.Repository 的项目,其存储库文件以 *Repository 结尾。它们是自动注册的。
有什么提示或帮助吗?
For auto-registration of unity it's better to separate the Interfaces
and Repositories
as folder in the repository project with proper naming convention.
如果你拥有全部存储库在单个项目下,不需要扫描所有程序集。这应该注册项目下的所有存储库CManager.Repository
public static class UnityConfig
{
public static void RegisterComponents()
{
var container = new UnityContainer();
var repositoryAssembly = AppDomain.CurrentDomain.GetAssemblies()
.First(a => a.FullName == "CManager.Repository, Version=X.X.X.X, Culture=neutral, PublicKeyToken=null");
container.RegisterTypes(repositoryAssembly.GetTypes(),
WithMappings.FromMatchingInterface,
WithName.Default,
WithLifetime.ContainerControlled);
container.RegisterType<ApplicationDbContext>(new PerResolveLifetimeManager());
// ................ register other things is needed
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
}
我们必须在应用程序上注册统一组件startup,传统上在内部Global.asax.cs
文件。所以说UnityConfig.cs
启动项目下的文件App_Start
folder.
public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
UnityConfig.RegisterComponents();
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
并确保其他项目连接起来与启动项目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)