0

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

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

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

然后我得到错误:

无法从程序集“Microsoft.Practices.Unity.Configuration,Version=1.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”加载类型“PFServer.DataAccess.TestDataAccess”。

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

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

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

4

1 回答 1

2

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" />
            ...
于 2008-10-22T11:44:36.900 回答