Wewnętrzne słowo kluczowe w C# może sprawić, że oznaczone metody, pola lub atrybuty będą dostępne tylko w obecnym asemblerze, więc co jeśli inne zespoły muszą używać tej metody wewnętrznej? .NET oferuje sposób wykonania tej funkcji podobny do klasy friend w C++, czyli użycie InternalsVisibleTo.
To jest powszechne podczas testów, a do testowania funkcjonalności oznaczonej wewnętrzną metodą w projekcie potrzebny jest inny projekt, więc dzięki InternalsVisibleTo nie musimy zmieniać metody, która nie powinna być publiczna, aby przeprowadzić testy jednostkowe.
Wciąż są pewne rzeczy, na które warto zwrócić uwagę podczas korzystania z InternalsVisibleTo, zwłaszcza PublicKey nie jest łatwy do zrozumienia, więc porozmawiajmy o tym, jak korzystać z tego InternalsVisibleTo:
Najpierw wyjaśnijmy założenie: Project1 to projekt funkcjonalny, a Project1.Test (nazwa assembly: Project1.Test.dll) to projekt testowy dla Project1.
1. Otwórz plik Assembly.cs Project1 i dodaj to zdanie na końcu pliku:
PublicKey=****** powinien zostać zastąpiony Project1.Test.dll kluczem publicznym, a jak uzyskać PublicKey, prosimy zobaczyć sekcję Notatki na końcu artykułu.
2. Sprawdź, czy przestrzeń nazw: System.Runtime.CompilerServices jest dodana do referencji przestrzeni nazw Assembly.cs, ponieważ InternalsVisibleTo znajduje się w przestrzeni nazw System.Runtime.CompilerService.
Notes:
1. Jak zdobyć PublicKey?
O: W wierszu poleceń użyj sn -tp Project1.Test.dll, aby zobaczyć PublicKey i PublicKeyToken
2. Jeśli Project1 jest projektem o silnej nazwie, to InternalsVisibleTo musi określić PublicKey, więc Project1.Test musi również użyć silnej sygnatury, aby poprawnie użyć InternalsVisibleTo, w przeciwnym razie kompilacja popełni błąd, jeśli Project1 nie użyje silnej sygnatury, Wtedy Project1.Test nie musi używać silnych sygnatur, a przy użyciu InternalsVisibleTo wymagana jest tylko nazwa asembleru, bez potrzeby ustawiania PuklicKey. |