包含非CLS兼容参考的程序集是否可以符合CLS?

时间:2011-02-12 01:02:54

标签: c# c#-4.0 cls-compliant

我有一个与我自己的项目引用的不符合CLS的现有DLL。当我将程序集标记为符合CLS时,我收到编译器警告,引用的程序集中的名称不符合CLS。

有没有办法让我的程序集符合CLS标准并将引用的标记标记为不是?

2 个答案:

答案 0 :(得分:10)

是的,您的DLL可以符合CLS,只要它不会从引用的程序集中暴露任何非CLS兼容的成员 - 也就是说,它没有在任何公共或受保护的组件中提及它们。成员或类型。 (它仍然可以在私有和内部成员和类型中使用它们。)

如果您的DLL确实需要直接从不兼容的DLL公开类型,您可以尝试将这些类型封装在您自己的包装器中(例如,方法可能会返回MyWrapperAroundNaughtyType而不是NaughtyType ),或者您可以标记API CLSCompliant(false)的相关成员,以便在编译器检查时选择那些成员。

答案 1 :(得分:0)

由于其他建议不起作用,我最终要做的是将引用的dll(具有不符合CLS要求的成员)的属性Embed Interop Types设置为false。