Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 19548|Odpověď: 0

[Zdroj] Použijte InternalsVisibleTo pro přidání "friend assembly" do assembleru

[Kopírovat odkaz]
Zveřejněno 06.02.2017 14:28:57 | | |

Interní klíčové slovo v C# může zpřístupnit označené metody, pole nebo atributy pouze v aktuálním assembleru, takže co když ostatní assemblery potřebují použít tuto interní metodu? .NET nabízí způsob, jak tuto funkci provést podobně jako friendclass v C++, tedy použitím InternalsVisibleTo.

To je běžné při testování, kdy je potřeba jiný projekt, který otestuje funkcionalitu označenou interní metodou v projektu, takže s InternalsVisibleTo nemusíme měnit metodu, která by neměla být veřejná, abychom mohli provádět jednotkové testování.

Stále je třeba věnovat pozornost při používání InternalsVisibleTo, zejména PublicKey není snadné pochopit, pojďme si promluvit, jak používat tento InternalsVisibleTo:

Nejprve vysvětlíme základní předpoklad: Project1 je funkční projekt a Project1.Test (název assembleru: Project1.Test.dll) je testovací projekt pro Project1.

1. Otevřete Assembly.cs soubor Project1 a přidejte tuto větu na konec souboru:


PublicKey=****** by měl být nahrazen Project1.Test.dll veřejným klíčem, pokud jde o získání PublicKey, viz sekce Poznámky na konci článku.

2. Ověřit, že jmenný prostor: System.Runtime.CompilerServices je přidán do reference jmenného prostoru Assembly.cs, protože InternalsVisibleTo se nachází ve jmenném prostoru System.Runtime.CompilerService.

Notes:

1. Jak získám PublicKey?

Odpověď: V příkazovém řádku použijte sn -tp Project1.Test.dll pro zobrazení PublicKey a PublicKeyToken

2. Pokud je Project1 projekt se silným názvem, pak InternalsVisibleTo musí specifikovat PublicKey, takže Project1.Test musí také použít silný podpis, aby správně použil InternalsVisibleTo, jinak kompilace udělá chybu, pokud Project1 nepoužije silný podpis, Pak Project1.Test nemusí používat silné podpisy a při použití InternalsVisibleTo je potřeba pouze název sestavy a není nutné nastavovat PuklicKey.




Předchozí:InternalsVisibleToAttribute vystavuje interního člena specifikované friendové sestavě
Další:[Mýtus] Bude metoda Init objektu HttpApplication vykonána pouze jednou?
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com