2011-02-12 53 views
9

我有一個現有的DLL不符合CLS,我從我自己的項目中引用。當我將程序集標記爲符合CLS時,我收到編譯器警告,說明引用程序集中的名稱不符合CLS。包含非CLS兼容引用的程序集是否可以符合CLS?

有沒有辦法讓我的程序集符合CLS並將引用的標記爲不是?

回答

10

是的,只要你的DLL沒有公開引用程序集中的任何非CLS兼容成員 - 也就是說,它沒有在它自己的公共或受保護的成員或類型。 (它仍然可以在私有和內部成員和類型中使用它們)。

如果您的DLL確實需要直接從不兼容的DLL中公開類型,那麼您可以嘗試在自己的包裝中封裝這些類型(例如方法可能會返回MyWrapperAroundNaughtyType而不是NaughtyType),或者您可以標記API CLSCompliant(false)的相關成員,以便只選擇那些不在編譯器檢查中的成員。

+0

我是否還需要將「嵌入互操作類型」標記爲false? (這是一個COM庫,由於帶下劃線的名稱,它不符合CLS。) – ide 2011-02-12 01:18:47