Otrzymuję ostrzeżenie w ten sposób: Jeśli wiesz, co to jest, wytłumacz proszę & pomóż mi się go pozbyć. Nam.Typ argumentu nie jest zgodny z CLS, dlaczego?
Odpowiedz
W pliku AssemblyInfo.cs, to prawdopodobnie ma wiersz, który czyta
[assembly:CLSCompliant(true)]
Jeśli tak, to muszą być spełnione następujące zasady. (Copy-Pasta z http://www.devarticles.com/c/a/C-Sharp/Making-Your-Code-CLS-Compliant/)
Niepodpisane typy nie powinny być częścią publicznego interfejsu klasy. Oznacza to, że pola publiczne nie powinny mieć typów bez znaku, takich jak uint lub ulong, publiczne metody nie powinny zwracać typów bez znaku, parametry przekazywane do funkcji publicznej nie powinny mieć typów bez znaku. Jednak typy bez znaku mogą być częścią prywatnych członków.
Niebezpieczne typy, takie jak wskaźniki, nie powinny być używane z członkami publicznymi. Jednak można ich używać z prywatnymi członkami.
Nazwy klas i członków nie mogą się różnić tylko w zależności od ich przypadku. Na przykład nie możemy mieć dwóch metod o nazwie MyMethod i MYMETHOD.
Tylko właściwości i metody mogą być przeciążone, Operatory nie powinny być przeciążone.
Niepodpisane typy mogą być częścią publicznego interfejsu, jeśli nie ujawniają żadnej funkcji, której kod napisany w języku bez użycia niepodpisanych typów mógłby być niemożliwy do użycia.Na przykład metoda przechowania 32-bitowej wartości bez znaku w czterech kolejnych bajtach mogłaby poprawnie zawierać przeciążenia zarówno dla "UInt32" i "Int64", a klasa mogłaby zapewnić metodę konwertowania czterech kolejnych bajtów na 'UInt32', jeśli także pod warunkiem, że zwróci tę samą wartość, co "Int64". – supercat
Niektórzy więcej informacji:
I można dostać te ostrzeżenia w zespole CLS zgodna, że odwołuje montaż non-CLS-RoHS (i naraża ITS elementy niezgodne z CLS):
Pierwszy link zerwany. – rkg
To jest stare pytanie, ale pomyślałem, że lepsze wyjaśnienie należy się przyszłym śledczym (takim jak ja).
Po pierwsze, linki w innych odpowiedziach podają bardzo szczegółowo przyczynę tego ostrzeżenia.
Jednak, podsumowując, kod napisany dla Common Language Runtime (taki jak C#) jest zgodny z CLS, jeśli może współpracować z innymi językami zaprojektowanymi dla CLR. Oznacza to, że niektóre typy danych specyficzne dla języka, które nie są wspólne dla całego środowiska wykonawczego, nie są zgodne. Szybkim i łatwym rozwiązaniem w odniesieniu do zmiennych i metod jest nadanie im modyfikatora widoczności internal
, który określa, że metoda, klasa, właściwość itd. Nie jest widoczna poza złożeniem, dla którego jest tworzony. To powinno być zrobione tylko na tych przedmiotach, których nie potrzebujesz lub chcesz użyć poza zgromadzeniem; dla tych, które mają być widoczne, użyj typów danych zgodnych z CLS.
- 1. Typ nie jest zgodny z protokołem
- 2. Nil nie jest zgodny z oczekiwanym typem argumentu UIViewAnimationOptions
- 3. Typ CCC nie jest zgodny z protokołem "NSObjectProtocol"
- 4. Dlaczego moja klasa nie jest zgodna z CLS?
- 5. „Tablice jako argumenty atrybut nie jest CLS zgodny” ostrzeżenie, ale nie ma informacji o typie podane
- 6. Dlaczego typ argumentu var-arg "jest w przybliżeniu"?
- 7. Dlaczego standard HL7 nie jest zgodny z XML?
- 8. Typ ogólny zgodny z protokołem w Swift
- 9. Swift ogólny typ zgodny z dwoma protokołami
- 10. Typ argumentu zamknięcia wielu parametrów nie wywnioskowany
- 11. Nie jest zgodny z protokołem UIPickerViewDataSource
- 12. Typ argumentu funkcji anonimowej
- 13. Dlaczego nie używasz argumentu classpath?
- 14. RegistrationFormType :: buildForm() nie jest zgodny
- 15. Dlaczego odliczanie argumentu szablonu nie działa tutaj?
- 16. Generic rozszerzenie metoda: Typ argumentu nie można wywnioskować z wykorzystaniem
- 17. Dlaczego nie jest to typ POD?
- 18. Konwertuj typ C# by-reference na zgodny nieindencyjny typ
- 19. Dlaczego rozmiar nie jest szablonem argumentu std :: initializer_list?
- 20. Typ "OSType" nie jest zgodny z protokołem "AnyObject" w Swift 2.0
- 21. Dlaczego musimy określać typ danych każdego formalnego argumentu osobno?
- 22. Szablon typ argumentu odliczenie przez operatora konwersji
- 23. Jaka jest różnica pomiędzy rzutem (void *) i (void (*) (typ argumentu))?
- 24. Jak mogę mieć wektor, który jest ściśle zgodny z jego wartościami, jak normalny typ z grzywką (!)?
- 25. , więc jaki jest typ "tego"? Dlaczego "to" nie jest lwartością?
- 26. błąd Emacs Lisp "Niewłaściwy typ argumentu: commandp"
- 27. Kwantyfikator nie jest zgodny z niczym w regex
- 28. Widok maszynki do golenia nie jest zgodny z oczekiwaniami
- 29. typu „string” nie jest zgodny z protokołem NilLiteralConvertible
- 30. „Ten projekt nie jest zgodny z aktualną wersją Visual Studio”
Jak wygląda usługa INotificationService? –