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

Pat*_*ick 5 c# wpf dll compiler-errors .net-assembly

我用C#(wpf)面对这个错误.这个链接没用

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

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

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

在解决方案中,我有一个由我制作的项目,其中包括上一个库中的类型.在我的库中我定义:

public ObservableCollection<PCDLRN.DimensionCmd> obcPcdlrnDimensionCommands = new ObservableCollection<PCDLRN.DimensionCmd>();
Run Code Online (Sandbox Code Playgroud)

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

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

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

在此输入图像描述

--EDIT ---正如所建议的那样,我已经将embedded = true更改为false,因为更改了图片中的prop,但错误仍然存​​在

在此输入图像描述

小智 10

正如WasGoodDone所说,你需要为用于泛型的两个(所有)程序集使用相同的类.

换句话说,如果你有assembly1,那引用一些interopAssembly,并且assembly2引用相同的interopAssembly,并且切换embedded interop typetrue,那么你将有两个类型的副本interopAssembly.

如果你想使用一些交叉引用assembly1assembly2,.NET解决不了,因为从他们的角度来看,这些类是不同的.

当您关闭嵌入式选项时,程序集将引用包含互操作类型的另一个程序集.通过这种方式,您可以在不同的库中使用互操作类型.

因此,如果您遇到上述问题,则表示您至少有两个引用PCDLRN的程序集,并且必须关闭embedded interop type所有程序集.