- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Unity 3 有什么办法可以解决这个问题吗?
我已尽一切可能绕过此消息错误,但我无法解决;我已经完成了我在谷歌搜索中看到的所有内容。
我几乎要放弃并尝试另一种 DI 解决方案。
我的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<assembly name="Biblioteca" />
<assembly name="Biblioteca.Contracts" />
<assembly name="Biblioteca.Business" />
<namespace name="Biblioteca" />
<namespace name="Biblioteca.Contracts" />
<namespace name="Biblioteca.Business" />
<container>
<register type="Biblioteca.Contracts.IManterCategoriaBO" mapTo="Biblioteca.Business.ManterCategoriaBO" />
</container>
</unity>
</configuration>
我的界面:
using Biblioteca.Transport;
using System.Linq;
namespace Biblioteca.Contracts
{
public interface IManterCategoriaBO
{
IQueryable<CategoriaDTO> GetAll();
CategoriaDTO GetById(int id);
void Insert(CategoriaDTO dto);
}
}
我的具体类:
using Biblioteca.Contracts;
using Biblioteca.Transport;
using Biblioteca.Data;
using System;
using System.Linq;
namespace Biblioteca.Business
{
public class ManterCategoriaBO : IManterCategoriaBO
{
public CategoriaDTO GetById(int id)
{
CategoriaDTO dto = new CategoriaDTO();
ManterCategoriaDO categoriaDO = new ManterCategoriaDO();
dto = categoriaDO.GetById(1);
return dto;
}
public IQueryable<CategoriaDTO> GetAll()
{
throw new NotImplementedException();
}
public void Insert(CategoriaDTO dto)
{
throw new NotImplementedException();
}
}
}
我的 Global.asax:
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using Biblioteca.Dependency;
namespace Biblioteca
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//Below is a static variable to take the unity container
//which is on a dependency project
Global.Container = Bootstrapper.Initialise();
}
}
}
我的 Bootstrap 类:
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
using System.Configuration;
using System.Web.Mvc;
using Unity.Mvc4;
namespace Biblioteca
{
public static class Bootstrapper
{
public static IUnityContainer Initialise()
{
var container = BuildUnityContainer();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
return container;
}
private static IUnityContainer BuildUnityContainer()
{
string path = ConfigurationManager.AppSettings["UnityConfigFilePath"].ToString();
var fileMap = new ExeConfigurationFileMap() { ExeConfigFilename = path + "\\Unity.config" };
System.Configuration.Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
var unitySection = (UnityConfigurationSection)configuration.GetSection("unity");
//*** this line is firing the error !!! ****
var container = new UnityContainer().LoadConfiguration(unitySection);
return container;
}
}
}
我的依赖项目静态类:
using Microsoft.Practices.Unity;
namespace Biblioteca.Dependency
{
public static class Global
{
public static IUnityContainer Container = null;
public static T Resolve<T>()
{
return Container.Resolve<T>();
}
}
}
我在 MVC 4 项目上的 UI 模型类文件。我正在使用 4.5 框架。
using Biblioteca.Contracts;
using Biblioteca.Dependency;
namespace Biblioteca.Models
{
public class LivroModel
{
public void GetAll()
{
if (Global.Container != null)
{
var categoriaBO = Global.Resolve<IManterCategoriaBO>();
categoriaBO.GetById(1);
}
}
}
}
我认为一切都在正确的道路上。但是,我看不到这个 DI 工作,因为我在映射过程中遇到错误,在我的 Bootstrapper 类的下面一行中,BuildUnityContainer 方法:
var container = new UnityContainer().LoadConfiguration(unitySection);
错误是:
The type name or alias Biblioteca.Contracts.IManterCategoriaBO could not be resolved. Please check your configuration file and verify this type name.
我仔细检查了我所有的类(class),对我来说,它们没问题。还是遗漏了什么?
最佳答案
问题出在你的配置文件中。您将两个概念与一些不正确的语法混合在一起。
<assembly... />
和 <namespace ... />
节点在您的 <register ... />
时提供程序集和命名空间搜索顺序节点包含无法自行找到的类型。如果找不到类型,它将搜索 [namespace].Type, [assembly]
的所有组合.这是错误所在:它不搜索 Type, [assembly]
.如果有<namespace ... />
节点已定义,它不会尝试仅附加程序集。
所以你的 <register type="Biblioteca.Contracts.IManterCategoriaBO" mapTo="Biblioteca.Business.ManterCategoriaBO" />
节点的类型为 Biblioteca.Contracts.IManterCategoriaBO
其中不包含程序集,因此无法找到。因此,它需要进行搜索。您确实指定了 <namespace ... />
节点,因此它将首先尝试 Biblioteca.Biblioteca.Contracts.IManterCategoriaBO, Biblioteca
.请注意重复的 Biblioteca 名称。
这是一个更正的配置文件。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<assembly name="Biblioteca" />
<assembly name="Biblioteca.Contracts" />
<assembly name="Biblioteca.Business" />
<namespace name="Biblioteca" />
<namespace name="Biblioteca.Contracts" />
<namespace name="Biblioteca.Business" />
<container>
<register type="IManterCategoriaBO" mapTo="ManterCategoriaBO" />
<!-- Or this works -->
<!--<register type="Biblioteca.Contracts.IManterCategoriaBO, Biblioteca" mapTo="Biblioteca.Business.ManterCategoriaBO, Biblioteca" />-->
</container>
</unity>
</configuration>
关于c# - Unity 3 和错误 "The type name or alias "xxxxx“无法解析。请检查您的配置文件并验证此类型名称。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18668240/
我会在 Cmder 的另一个别名中使用别名。 我有一个很好的别名(第一个)到一个大命令,我会在另一个(第二个)中使用它: mergelocdist=git fetch origin --prune -
我正在尝试让 cgi 在我的本地主机服务器上工作。 首先我添加了虚拟本地主机。 我有 conf 文件/etc/apache2/sites-available/myage.com.conf这是这个文件的
有什么区别: 从'utils'导入utils 和 从“utils”导入 * 作为 utils? 情况 A: //utils.js export function doSomething() { //.
我用 MySQL 试过这个: DELETE FROM `contact_hostcommands_relation` AS `ContactHostCommand` WHERE (`ContactHo
我正在为一个学校项目使用 NodeJS 和 Sequelize,我正在努力与 sequelize 工作建立联系。我之前尝试过一些东西,但没有一个让我开心。 基本上,一个用户可以拥有多个播放列表 (ha
除了 Set-Alias能够更改现存的别名,这些命令之间有什么区别? 为什么会有人用New-Alias在 Set-Alias ? 最佳答案 使用 new-alias 的一个(唯一的?)优势是当您覆盖现
假设 bash 配置了以下别名: alias up="git --git-dir /path/to/backup/.git" 那个特定的存储库 - 并且只有那个存储库 - 具有以下 git 别名: [
我的Sql查询是 Select a.sum_total FROM OneWayNetTransactionRes a LEFT OUTER JOIN OneWayNetTransactionRes b
我可能以错误的方式寻找这个,但有一件事我不明白: select max(dateofbirth) -5 from person; 因此,上面的示例为我提供了任何人的最大日期减去 5 天,正如我所期望的
我有一个 Lambda,它有许多版本,并为每个版本创建了别名。这是一个例子 Apple_Version_1 Apple_Version_1.1 Apple_Version_1.2 Apple_Vers
我使用 win32com 库在本地获取邮件,但现在我使用 Exchangelib 来执行相同的操作,但我找不到与此等效的函数(item.sender.getExchangerUser().Alias)
在我的 .bashrc 文件中,我放入了以下两行: alias foo1="echo $1" alias foo2="echo '$1'" 然后,在终端中,我得到以下输出: $ foo1 hello
只要代码有更新,我就会发布新版本,并为该版本创建别名。但以前的别名在新版本中消失了 这是我的 YAML 模板片段 Description: Publish a new version of a
在我的 Django 项目中,我试图将数据库字段从 OneToOne 更改为foreignKey。当我运行“python manage.py migrate”时,它会因一个长回溯而中断,并以我在标题中
我有一个关于记录的问题:假设我有一个接收记录的函数,如下所示: getId : { file | id : String } -> String getId file = file.id 我可以传递这
我写了这样的语法: grammar StatementFormat { token TOP { ( | '%' )* } token plain { } token plac
这个问题在这里已经有了答案: Creating permanent executable aliases (4 个回答) 8年前关闭。 例如,如果您创建别名: alias cls="clear" 它存
我在我的 iPhone 应用程序中查看一些动画,感觉它有点难看。然后我明白了:它只是不通过子像素状态进行动画处理。 所以,如果我使用通常的+beginAnimations/+commitAnimati
在Elastic / Elasticsearch网站上的Faking Index per User article中,建议对多个(数千个)客户端使用单个索引,并使用过滤器别名以不可见的方式分离其数据。
这可能是一个无聊的问题,但我无法找到我完全理解以下查询的答案。 我搬到了一个新的研究所,我正在访问虚拟机进行研究。我想创建一个方便的 bashrc 让生活更轻松。 因此,使用以下内容编辑 ~/.bas
我是一名优秀的程序员,十分优秀!