Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 19548|Odpowiedź: 0

[Źródło] Użyj InternalsVisibleTo, aby dodać "friend assembly" do asemblera

[Skopiuj link]
Opublikowano 06.02.2017 14:28:57 | | |

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.




Poprzedni:InternalsVisibleToAttribute udostępnia wewnętrznego członka określonemu sojusznikowi
Następny:[Mit] Czy metoda Init obiektu HttpApplication zostanie wykonana tylko raz?
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com