He creado un atributo que acepta una matriz (params) en su constructor.Atributos y parámetros de matriz CLS
internal class MyTestAttribute : Attribute
{
public MyTestAttribute (params Options[] options)
{
....
}
}
Option
aquí es una enumeración (con una gran cantidad de valores), por lo que un sitio de llamada de ejemplo será
[MyTest(Option.One, Option.Three)]
internal void SomeMethod(int param1, long param2)
{
....
}
Todo es color de rosa hasta ahora, y funciona de la configuración, pero estoy recibiendo una "Arrays como argumentos de atributo no es compatible con CLS" advertencia en cada sitio de llamada. Ahora, tengo que admitir que no necesito usar este ensamblaje desde ningún otro lugar que C#, ni hago advertencias como errores, pero las cientos de advertencias se vuelven molestas.
La solución obvia es desactivar el cumplimiento de CLS, pero por el momento no puedo hacer eso.
¿Hay algún otro enfoque para la creación del atributo que siga haciendo lo mismo, pero elimine las advertencias?
Arg, ¡pásame! Pero ¿por qué se queja CLS en una clase de atributo interno? – leppie
Sí, 'Option' es una enumeración, y el sitio de llamada utilizará como máximo tres o cuatro opciones, por lo que esta es una gran solución. Tnx, tenía la sensación de que estaba pasando por alto algo obvio :) – SWeko
@leppie, no se queja de la definición del atributo (si es público), se queja en los sitios de llamadas públicas. – SWeko