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

如果不使用程序集,我可以使用引用不可用程序集的库吗?

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

    我有一个库X,它有一个使用组件Y的类C。 但是,Y在64位中不可用,因此它已被组件Z替换,但我希望在可用时仍然使用Y。

    所以我想引用y和z,然后

    C.vb:

    #If 32bit then
    Class C
    // implementation of C using Y
    End Class
    #End If
    

    C64.VB

    #If 64bit then
    Public Class C
    // implementation of C using Z
    End Class
    #End If
    

    注: 由于用VB注释突出显示错误而导致的C样式注释。

    我看到的问题是,在64位版本中,我将有一个对y的引用(它是一个COM对象,所以它是一个互操作程序集,如果这有区别的话)。假设代码中的任何地方都没有调用Y,我是否可以实例化C?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Hans Passant    16 年前

    你在几个层面上都很好。如果确保代码不使用Y中的任何类型,编译器实际上会从最终程序集中删除程序集引用。即使在代码中有对Y类型的引用,它们实际上也可以被JIT编译,因为 做 具有有效的元数据。您已经得到了interop程序集。

    唯一不能做的就是创建COM对象并调用它的方法。您可以使用常规if而不是if。允许您避免构建单独的程序集。测试intptr.size是一个很好的方法,可以确定您是否在64位模式下运行。

    推荐文章