Interné kľúčové slovo v C# môže sprístupniť označené metódy, polia alebo atribúty len v aktuálnej zostave, takže čo ak iné zostavy potrebujú použiť túto internú metódu? .NET poskytuje spôsob, ako dosiahnuť túto funkciu podobnú priateľskej triede v C++, teda použitím InternalsVisibleTo.
Toto je bežné pri testoch a je potrebný ďalší projekt na testovanie funkcionality označenej internou metódou v projekte, takže s InternalsVisibleTo nemusíme meniť metódu, ktorá by nemala byť verejná, aby sme mohli robiť jednotkové testovanie.
Stále je tu niekoľko vecí, na ktoré treba dávať pozor pri používaní InternalsVisibleTo, najmä PublicKey nie je ľahko pochopiteľné, poďme sa porozprávať o tom, ako používať tento InternalsVisibleTo:
Najprv vysvetlíme predpoklad: Project1 je funkčný projekt a Project1.Test (názov assemblera: Project1.Test.dll) je testovací projekt pre Project1.
1. Otvorte Assembly.cs súbor Project1 a pridajte túto vetu na koniec súboru:
PublicKey=****** by mal byť nahradený Project1.Test.dll verejným kľúčom, čo sa týka získania PublicKey, pozrite si sekciu Poznámky na konci článku.
2. Overiť, že menný priestor: System.Runtime.CompilerServices je pridaný do referencie menného priestoru Assembly.cs, keďže InternalsVisibleTo sa nachádza v mennom priestore System.Runtime.CompilerService.
Notes:
1. Ako získam PublicKey?
Odpoveď: V príkazovom riadku použite sn -tp Project1.Test.dll na zobrazenie PublicKey a PublicKeyToken
2. Ak je Project1 projekt so silným názvom, potom InternalsVisibleTo musí špecifikovať PublicKey, takže Project1.Test musí tiež použiť silný podpis, aby správne použil InternalsVisibleTo, inak kompilácia urobí chybu, ak Project1 nepoužije silný podpis, Potom Project1.Test nemusí používať silné podpisy a pri použití InternalsVisibleTo je potrebný len názov zostavy a nie je potrebné nastavovať PuklicKey. |