代码之家  ›  专栏  ›  技术社区  ›  fire.eagle

引用可能存在于两个程序集之一中的类

  •  2
  • fire.eagle  · 技术社区  · 16 年前

    我目前正在为一个项目的数据采集器工作。它的工作方式是调用另一个收集数据的程序,该程序返回一个包含队列信息集合的数据结构。然后,收割机将数据序列化。实际收集数据的程序由另一个团队维护,最近他们进行了升级,并决定重新构建代码。我调用的方法仍然在相同的位置,但是,我得到的数据结构被移到了不同的程序集(它的代码保持不变)。有趣的是,我们现在有两个版本的产品在现场,所以取决于哪个版本的客户端,我需要的数据结构可能在两个不同的程序集之一。如果可能的话,我老板想试着只用一个版本的harvester程序。

    所以,我的问题是:使用C#和.NET3.5,有没有办法选择在运行时使用哪个程序集?我想我可以使用反射,但我想知道是否有任何方法可以在编译时正常编写代码,然后根据其他程序的版本在运行时解决依赖关系。

    3 回复  |  直到 16 年前
        1
  •  0
  •   Meiscooldude    16 年前

    interface IQueueInfoProvider
    {
       DataStructure FetchData();
    }
    
    class Version1QueueInfoProvider : IQueInfoProvider
    {
       DataStructure FetchData()
       {
          //Fetch using Version1 Assemblies.
       }
    }
    
    class Version2QueueInfoProvider : IQueInfoProvider
    {
       DataStructure FetchData()
       {
           //Fetch using Version2 Assemblies.
       }
    }
    

    我相信.NET不会尝试加载引用的程序集,如果它们不需要的话,但是如果我错了,您可以随时使用反射。

        2
  •  0
  •   Conrad Frix    16 年前

    您可能需要研究assemblybinding标记。

    http://msdn.microsoft.com/en-us/library/twy1dw1e.aspx

        3
  •  0
  •   user240141 user240141    16 年前

    你应该选择AppDomain

    http://www.codeproject.com/KB/cs/Assemblies___Appdomains.aspx

    另一个最受欢迎 http://www.west-wind.com/Weblog/posts/601200.aspx