Ho creato un attributo che accetta una matrice (params) nel suo costruttore.Attributi e parametri dell'array compatibili con CLS
internal class MyTestAttribute : Attribute
{
public MyTestAttribute (params Options[] options)
{
....
}
}
Option
qui è un enum (con un sacco di valori), quindi un sito di chiamata di esempio sarà
[MyTest(Option.One, Option.Three)]
internal void SomeMethod(int param1, long param2)
{
....
}
Tutto è peachy finora, e la messa a punto funziona, ma sto ricevendo un "Gli array come argomenti degli attributi non sono conformi a CLS" su ciascun sito di chiamata. Ora, devo ammettere che non ho bisogno di usare questo assembly da qualsiasi altro C#, né faccio avvisi-come-errori, ma le centinaia di avvertimenti stanno diventando fastidiosi.
La soluzione ovvia è disattivare CLS-compliance, ma al momento non riesco a farlo.
C'è qualche altro approccio alla creazione dell'attributo che continuerà a fare la stessa cosa, ma eliminare gli avvertimenti?
Arg, picchiami! Ma perché il CLS si lamenta di una classe di attributi interna? – leppie
Sì, 'Option' è un enum e il sito di chiamata utilizzerà al massimo tre o quattro opzioni, quindi questa è un'ottima soluzione. Tnx, ho avuto la sensazione che stavo trascurando qualcosa di ovvio :) – SWeko
@leppie, non si lamenta della definizione dell'attributo (lo fa se è pubblico), si lamenta sui siti di chiamata pubblica. – SWeko