我正在使用MS Unity IoC框架开展我的第一个项目。

如果我在我的统一配置中有这个:

  <container name="TestBusiness">
    <types>
      <type type="PFServer.DataAccess.TestDataAccess" />

然后我收到错误:

  

无法加载类型   'PFServer.DataAccess.TestDataAccess'   从装配   “Microsoft.Practices.Unity.Configuration,   版本= 1.1.0.0,文化=中立,   公钥= 31bf3856ad364e35' 。

但是,如果我将程序集名称添加到类型定义中:

  <container name="TestBusiness">
    <types>
      <type type="PFServer.DataAccess.TestDataAccess, PFServer" />

然后它工作正常。有没有办法添加一些默认的程序集来加载类型?在这种情况下奇怪的是“PFServer.dll”和“PFServer.dll”。是包含所有这些配置的程序集。我觉得奇怪的是当前的程序集不在解析对象的路径中......或者我只是做错了什么?

有帮助吗?

解决方案

Unity通过调用静态方法Type.GetType(string)将字符串解析为Type对象,该方法需要一个参数 AssemblyQualifiedName 。对GetType的调用是在Microsoft.Practices.Unity.Configuration程序集中进行的,该程序集不知道您的PFServer程序集,因此它需要字符串中的程序集名称。

我认为类型别名可能会对您有所帮助。这是一个例子。

<unity>
    <typeAliases>
        <typeAlias alias="TestDataAccess" type="PFServer.DataAccess.TestDataAccess, PFServer" />
        ...
    </typeAliases>

    <containers>
      <container name="TestBusiness">
        <types>
            <type type="TestDataAccess" />
            ...
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top