Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 19548|Svar: 0

[Källa] Använd InternalsVisibleTo för att lägga till "friend assembly" i assembly

[Kopiera länk]
Publicerad på 2017-02-06 14:28:57 | | |

Det interna nyckelordet i C# kan göra att de markerade metoderna, fälten eller attributen endast är tillgängliga inom den aktuella samlingen, så vad händer om andra sammansättningar behöver använda denna interna metod? .NET ger ett sätt att utföra denna funktion liknande vänklassen i C++, vilket är att använda InternalsVisibleTo.

Detta är vanligt vid tester, och ett annat projekt behövs för att testa funktionaliteten som markeras av den interna metoden i projektet, så med InternalsVisibleTo behöver vi inte ändra en metod som inte borde vara offentlig till offentlig för att kunna göra enhetstestning.

Det finns fortfarande vissa saker att vara uppmärksam på när man använder InternalsVisibleTo, särskilt eftersom PublicKey inte är lätt att förstå, låt oss prata om hur man använder denna InternalsVisibleTo:

Låt oss först förklara premissen: Project1 är ett funktionellt projekt, och Project1.Test (assemblernamn: Project1.Test.dll) är ett testprojekt för Project1.

1. Öppna Assembly.cs-filen i Project1 och lägg till denna mening i slutet av filen:


PublicKey=****** bör ersättas med den Project1.Test.dll publika nyckeln, för hur man får tag på PublicKey, se avsnittet Anteckningar i slutet av artikeln.

2. Verifiera att namnrymden: System.Runtime.CompilerServices läggs till i namnrymdsreferensen för Assembly.cs, eftersom InternalsVisibleTo finns i namnrymden System.Runtime.CompilerService.

Notes:

1. Hur får jag en PublicKey?

S: Under kommandoraden, använd sn -tp Project1.Test.dll för att se PublicKey och PublicKeyToken

2. Om Project1 är ett projekt med starkt namn, måste InternalsVisibleTo specificera en PublicKey, så Project1.Test måste också använda en stark signatur för att använda InternalsVisibleTo korrekt, annars kommer kompileringen att göra ett fel, om Project1 inte använder en stark signatur, Då behöver Project1.Test inte använda starka signaturer, och när man använder InternalsVisibleTo krävs endast namnet på assemblern, och det finns inget behov av att ställa in PuklicKey.




Föregående:InternalsVisibleToAttribute exponerar den interna medlemmen för den angivna vänsammansättningen
Nästa:[Myt] Kommer HttpApplication-objektet Init-metoden bara att köras en gång?
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com