【问题标题】:How do you explain type forwarding in simple terms?你如何简单地解释类型转发?
【发布时间】:2013-08-08 20:42:13
【问题描述】:

在阅读this 文章后,我正在为 MCTS 70-536 做准备。我不是 100% 确定我理解类型转发的概念。我发现文章中给出的步骤更加令人困惑。如果我要复制要转发的类型的源代码并重新编译它,那该怎么办。旧 dll 和客户端会发生什么?

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    类型转发允许您在程序集之间重新定位类型。所以最初它是AssemblyA 中的TypeA。通过应用类型转发,您可以在AssemblyB 中以TypeA 结尾。

    微妙之处在于已经编译的代码没有看到变化——他们要求AssemblyA中的类型,运行时默默地给他们AssemblyB中的类型。如果您有现有代码,这一点非常重要。

    但是; 代码不能在没有引用AssemblyB 的情况下重新编译引用TypeA

    所以:

    • 旧客户端无需重新编译
    • 但是,在上面的示例中,您确实需要重建 AssemblyAAssemblyB
    • 新代码(或任何重新编译的代码)现在必须引用AssemblyB(新代码)

    【讨论】:

    • 我在另一个网站上读到了这个。使用它似乎有一些好处。但是,一位发帖人评论说 VB.NET 使用类型转发,如果您进行财务计算,这是一个主要问题)。由于我无法联系到该用户,我很想知道您是否知道原因?
    • 多么奇怪。我认为类型转发和财务计算之间没有直接关系。我想知道它们的含义是否存在一些细微的差异……例如,VB6 执行了一种不同类型的类型转发,即它如何处理 COM 接口等(当您添加方法时),但又一次;我认为与财务没有直接关系。
    猜你喜欢
    • 2018-05-16
    • 2011-02-24
    • 1970-01-01
    • 2021-08-31
    • 2012-01-15
    • 2014-12-06
    • 2017-01-22
    • 1970-01-01
    • 2010-09-09
    相关资源
    最近更新 更多