我从自己的项目中引用了一个不符合 CLS 的现有 DLL。当我将我的程序集标记为符合 CLS 时,我收到编译器警告,指出引用的程序集中的名称不符合 CLS。
有没有一种方法可以使我的程序集符合 CLS,并将引用的程序标记为不符合 CLS?
最佳答案
是的,您的 DLL 可以是符合 CLS 的,只要它不从引用的程序集中公开任何不符合 CLS 的成员——也就是说,它没有在它自己的任何公共(public)或 protected 成员或类型。 (它仍然可以在私有(private)和内部成员和类型中使用它们。)
如果您的 DLL 确实需要直接从不兼容的 DLL 公开类型,您可以尝试将这些类型封装在您自己的包装器中(例如,方法可能返回 MyWrapperAroundNaughtyType
而不是 NaughtyType
),或者您可以将 API 的相关成员标记为 CLSCompliant(false)
,以便仅选择那些成员退出编译器检查。
关于c# - 包含不符合 CLS 的引用的程序集是否符合 CLS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4975589/