Да, ваша DLL может быть CLS-совместимой, если она не предоставляет никаких не-CLS-совместимых элементов из указанной сборки, то есть она не упоминает их ни в одной из своих открытых или защищенныхчлены или типы.(Он по-прежнему может использовать их как в закрытых, так и во внутренних членах и типах.)
Если вашей DLL действительно необходимо предоставлять типы непосредственно из несовместимой DLL, вы можете попробовать инкапсулировать эти типы в свои собственные оболочки (напримерметод может вернуть MyWrapperAroundNaughtyType
вместо NaughtyType
), или вы можете пометить соответствующих членов вашего API CLSCompliant(false)
, чтобы отказаться только от этих членов от проверки компилятором.