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

时间:2010-07-07 16:15:16

标签: c# assemblies reference

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

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

3 个答案:

答案 0 :(得分:0)

你应该去AppDomain

  

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

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

答案 1 :(得分:0)

您可能想要调查assemblybinding标记。

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

答案 2 :(得分:0)

您可以尝试使用Adapter(包装器)设计模式。

interface IQueueInfoProvider
{
   DataStructure FetchData();
}

class Version1QueueInfoProvider : IQueInfoProvider
{
   DataStructure FetchData()
   {
      //Fetch using Version1 Assemblies.
   }
}

class Version2QueueInfoProvider : IQueInfoProvider
{
   DataStructure FetchData()
   {
       //Fetch using Version2 Assemblies.
   }
}

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