Advertencia del compilador (nivel 1) CS3018

Actualización: noviembre 2007

Mensaje de error

'tipo' no se puede marcar como compatible con CLS porque es miembro del tipo 'tipo' no compatible con CLS
'type' cannot be marked as CLS-Compliant because it is a member of non CLS-compliant type 'type'

Esta advertencia se produce si una clase anidada con el atributo CLSCompliant establecido en true se declara como miembro de una clase declarada con el atributo CLSCompliant establecido en false. Se trata de algo no permitido, puesto que una clase anidada no puede ser compatible con CLS si es miembro de una clase exterior que no es compatible con CLS. Para resolver esta advertencia, quite el atributo CLSCompliant de la clase anidada o cámbielo de true a false. Para obtener más información sobre la compatibilidad con CLS, vea Escribir código compatible con CLS y Common Language Specification.

Ejemplo

El código siguiente genera el error CS3018.

// CS3018.cs
// compile with: /target:library
using System;

[assembly: CLSCompliant(true)]
[CLSCompliant(false)]
public class Outer
{
   [CLSCompliant(true)]   // CS3018
   public class Nested {}

   // OK
   public class Nested2 {}

   [CLSCompliant(false)]
   public class Nested3 {}
}