代码之家  ›  专栏  ›  技术社区  ›  CodingWithSpike

有什么方法可以在Unity/ObjectBuilder中添加一些默认程序集来解析类型吗?

  •  0
  • CodingWithSpike  · 技术社区  · 16 年前

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

    如果我的unity配置中有以下内容:

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

    然后我得到错误:

    无法加载类型 'PFServer。数据访问。测试数据访问 从组装 “微软。实践。团结。配置, 版本=1.1.0.0,文化=中性, 公钥令牌=31bf3856ad364e35'。

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

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

    那么它工作得很好。是否有任何方法可以添加一些默认的程序集来从中加载类型?在这种情况下,奇怪的是“PFServer.dll”是包含所有这些配置的程序集。我觉得奇怪的是,当前程序集不在解析对象的路径中。..还是我只是做错了什么?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Lee    16 年前

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

    我想化名可能对你有帮助。这里有一个例子。

    <unity>
        <typeAliases>
            <typeAlias alias="TestDataAccess" type="PFServer.DataAccess.TestDataAccess, PFServer" />
            ...
        </typeAliases>
    
        <containers>
          <container name="TestBusiness">
            <types>
                <type type="TestDataAccess" />
                ...