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

ide*_*ide 9 c# cls-compliant c#-4.0

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

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

ito*_*son 10

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

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

  • 我只是尝试使用`Microsoft.Office.Interop.Excel`并在任何地方将其包含在`using`语句中时收到警告.似乎要么将我的程序集标记为不合规,要么不嵌入互操作类型是要走的路.或者我可以完全限定所有的班级名字......不. (2认同)