【问题标题】:Cannot be used across assembly boundaries because it has a generic type parameters that is an embedded interop type不能跨程序集边界使用,因为它具有作为嵌入式互操作类型的泛型类型参数
【发布时间】:2014-08-05 06:47:53
【问题描述】:

在 VB.Net 中将 Sub 更改为函数时遇到此错误

Type System.Collection.Generic.List(Of mshtml.IHTMLDocument2) 不能跨程序集边界使用,因为它有一个作为嵌入式互操作类型的泛型类型参数

有人知道怎么解决吗?

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    将返回类型从 List(Of mshtml.IHTMLDocument2) 更改为 IList(Of mshtml.IHTMLDocument2)IEnumerable(Of mshtml.IHTMLDocument2) 可解决此问题。

    【讨论】:

    • 它修复了它,因为您不再有对该类型的引用,而只是该类型实现的接口。
    【解决方案2】:

    我通过确保所有程序集都将“嵌入互操作类型”设置为 FALSE 来解决此问题。

    似乎通常当您使用 COM 库时,该参数默认设置为 true。

    【讨论】:

    • 如果您解释了“嵌入互操作类型”的实际含义/作用,我会对此表示赞同。并不是说我自己无法查找,但我认为不应该轻率地推荐可能产生深远影响的装配属性更改。
    • @Lopside 不建议轻率。推荐给遇到 OP 错误的人。我认为这个建议没有比这更有针对性的了。
    • 当我尝试此解决方案时,它破坏了我的库,因为我收到以下错误:不可调用的成员 'IHTMLElement.children' 不能像方法一样使用。因此,这可能会解决 OP 的问题,但就@Lopside 而言,它确实有副作用。
    猜你喜欢
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 2022-06-17
    • 2014-12-01
    • 2014-10-28
    相关资源
    最近更新 更多