C#不能跨程序集边界使用,因为它具有作为嵌入式互操作类型的通用类型参数

帕特里克

我正在使用C#(wpf)遇到此错误。此链接没有用

不能跨程序集边界使用,因为它具有作为嵌入式互操作类型的通用类型参数

仅仅为了解释程序的结构,我可以说:

我正在使用由外部公司制造的图书馆。我们可以称之为PCDLRN

在解决方案中,我有一个由我自己创建的项目,其中包括前一个lib中的类型。在我的库中,我定义:

public ObservableCollection<PCDLRN.DimensionCmd> obcPcdlrnDimensionCommands = new ObservableCollection<PCDLRN.DimensionCmd>();

为了在我的主程序中使用。简而言之:

PCDLRN-> MYLIB obcPcdlrnDimensionCommands->我的程序myPcd.obcPcdlrnDimensionCommands

在我的程序中,我想访问前面提到的ObservableCollection,但是它没有构建,给出了标题错误。

在此处输入图片说明

-编辑---正如我所建议的,通过更改图片中的道具,我已经从Embedded = true更改为false,但是错误仍然存​​在

在此处输入图片说明

安东·帕夫洛夫(Anton Pavlov)

正如WasGoodDone所述,您需要对用于泛型的两个(所有)程序集使用相同的类。

换句话说,如果您有assembly1,引用了一些interopAssembly,而assembly2,引用了相同的interopAssembly并且切换embedded interop typetrue,则您将有来自的两个类型的副本interopAssembly

如果要使用从assembly1到的一些交叉引用assembly2,.NET无法解析它,因为从它们的角度来看,这些类是不同的。

当关闭嵌入式选项时,装配将引用包含互操作类型的另一个装配。这样,您就可以在不同的库中使用互操作类型。

因此,如果您遇到上述问题,则意味着您至少有两个引用PCDLRN的程序集,并且必须关闭embedded interop type所有这些程序集。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

不能跨程序集边界使用,因为它具有作为嵌入式互操作类型的通用类型参数

将类型从嵌入式互操作类型公开到其他程序集

使用WatiN的嵌入式互操作类型

使用类型在Go中具有嵌入式类型的参数定义函数

具有通用返回类型的C#函数的F#互操作

C嵌入式程序集错误:“ asm”操作数具有不可能的约束

具有不同通用参数的C#通用返回类型

属性 'fullName' 隐式具有类型 'any',因为它的 set 访问器缺少参数类型注释

C#是具有通用类型约束的通用类型

TS2683:“ this”隐式具有类型“ any”,因为它没有使用“ apply”进行类型注释

MarshalJSON具有嵌入式类型的类型最终以{}代替值

D3.js:'this' 隐式具有类型 'any',因为它没有类型注释

TypeScript / ReactJS / setTimeout:'this'隐式地具有'any'类型,因为它没有类型注释。

TypeScript:'this' 隐式具有类型 'any',因为它没有类型注释

错误:“嵌入式类型不能是接口的指针”

协议“行”只能用作通用约束,因为它具有“自身”或关联的类型要求

协议“形状”只能用作通用约束,因为它具有 Self 或相关类型要求

rest隐式具有any类型,因为它没有类型注释,并且在其自己的初始化程序中直接或间接引用

使用接口作为通用类的类型参数,但在C#中使用“类”的限制

具有多种消息类型的嵌入式 RTOS 生产者和消费者

@require 参数 '#' 的值不能为 'null',因为它的类型

类型“ SwiftClass”不能符合协议“ ObjcProtocol”,因为它具有无法满足的要求

使用通用类型参数作为参数

C#使用嵌入式图标

元素隐式具有“any”类型,因为“string”类型的表达式不能用于索引“Breakpoints”类型

元素隐式地具有“ any”类型,因为类型为string | 数字不能用于索引类型

元素隐式地具有“ any”类型,因为类型“ any”的表达式不能用于索引类型

元素隐式地具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

元素隐式具有“任意”类型,因为类型“字符串”的表达式不能用于索引类型A