A C# belső kulcsszavaja csak a jelenlegi assembly keretében elérhetővé teheti a jelölt metódusokat, mezőket vagy attribútumokat, szóval mi van, ha más assemblereknek ezt a belső módszert kell használniuk? A .NET egy olyan módot biztosít ennek a funkciónak a végrehajtására, hasonlóan a C++ friend osztályához, amely az InternalsVisibleTo használatát.
Ez gyakori tesztek során, és egy másik projektre van szükség a belső metódus által jelölt funkcionalizmus teszteléséhez, így az InternalsVisibleTo esetében nem kell olyan metódust megváltoztatnunk, amely nem lenne nyilvános, hogy egységtesztelést végezzünk.
Még mindig van néhány dolog, amire érdemes figyelni az InternalsVisibleTo használatakor, különösen a PublicKey nem könnyű megérteni, beszéljünk arról, hogyan lehet ezt az InternalsVisibleTo-t használni:
Először magyarázzuk el az alapfeltevést: a Project1 egy funkcionális projekt, míg a Project1.Test (assembly neve: Project1.Test.dll) egy tesztprojekt az 1-es projekthez.
1. Nyissa meg a Project1 Assembly.cs fájlját, és add hozzá ezt a mondatot a fájl végéhez:
A PublicKey=****** helyét a Project1.Test.dll nyilvános kulcsra kell cserélni, a PublicKey megszerzésének megfelelően kérjük, lásd a cikk végén található Jegyzetek részt.
2. Ellenőrizzük, hogy a névtér: A System.Runtime.CompilerServices hozzáadódik a Assembly.cs névtér hivatkozásához, mivel az InternalsVisibleTo a System.Runtime.CompilerService névtérben található.
Notes:
1. Hogyan szerezhetek PublicKey-t?
V: A parancssor alatt használd az sn -tp Project1.Test.dll a PublicKey és PublicKeyToken megtekintéséhez
2. Ha a Project1 erősen elnevezett projekt, akkor az InternalsVisibleTo-nak meg kell határoznia egy PublicKey-t, így a Project1.Testnek is erős aláírást kell használnia az InternalsVisibleTo helyes használatához, különben a fordítás hibát okoz, ha a Project1 nem használ erős aláírást, Ekkor a Project1.Test nem igényel erős aláírásokat, és az InternalsVisibleTo használatakor csak a szerkezet neve szükséges, és nincs szükség a PuklicKey beállítására. |