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

有没有一种方法可以让我的程序集符合 CLS 并将引用的程序集标记为不符合?

有帮助吗?

解决方案

是的,只要您的 DLL 不从引用的程序集中公开任何不符合 CLS 的成员,即它不会在其自己的任何公共或受保护的成员或类型中提及它们,就可以符合 CLS 。(它仍然可以在私有和内部成员和类型中使用它们。)

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top