Utworzono atrybut, który akceptuje tablicę (params) w swoim konstruktorze.Atrybuty i parametry tablic zgodne z CLS
internal class MyTestAttribute : Attribute
{
public MyTestAttribute (params Options[] options)
{
....
}
}
Option
tutaj jest enum (z dużą ilością wartości), więc miejsce próba połączenia będzie
[MyTest(Option.One, Option.Three)]
internal void SomeMethod(int param1, long param2)
{
....
}
Wszystko jest aksamitny tak daleko, a konfiguracja działa, ale mam Otrzymując "Tablice jako argumenty atrybutu nie są zgodne z CLS" ostrzeżenie na każdym wywołaniu witryny. Teraz muszę przyznać, że nie muszę używać tego zestawu z dowolnego miejsca poza C#, ani nie robię ostrzeżeń-jako-błędów, ale setki ostrzeżeń stają się denerwujące.
Oczywistym rozwiązaniem jest wyłączenie zgodności z CLS, ale w tej chwili nie mogę tego zrobić.
Czy istnieje inne podejście do tworzenia atrybutu, który będzie nadal robić to samo, ale pozbyć się ostrzeżeń?
Arg, pokonaj mnie! Ale dlaczego CLS narzeka na wewnętrzną klasę atrybutów? – leppie
Tak, 'Opcja' jest wylicznikiem, a strona wywoławcza używa co najwyżej trzech lub czterech opcji, więc jest to świetne rozwiązanie. Tnx, miałem przeczucie, że przeoczyłem coś oczywistego :) – SWeko
@leppie, nie narzeka na definicję atrybutu (robi to, jeśli jest publiczne), to narzeka na publiczne strony z ogłoszeniami. – SWeko