Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 19548|Yanıt: 0

[Kaynak] InternalsVisibleTo kullanarak assembly üzerine "friend assembly" ekleyin

[Bağlantıyı kopyala]
Yayınlandı 6.02.2017 14:28:57 | | |

C#'daki iç anahtar kelime, işaretlenmiş metotları, alanları veya nitelikleri yalnızca mevcut montaj içinde erişilebilir hale getirebilir, peki diğer montajlar da bu iç yöntemi kullanmak zorunda kalıyorsa ne olur? .NET, bu işlevi C++'daki arkadaş sınıfına benzer şekilde gerçekleştirmek için bir yol sunar; bu da InternalsVisibleTo kullanmaktır.

Bu testler sırasında yaygındır ve projede dahili metodun işaretlediği işlevselliği test etmek için başka bir proje gereklidir; bu yüzden InternalsVisibleTo ile birim testi yapmak için kamuya açık olmaması gereken bir yöntemi değiştirmemize gerek yok.

InternalsVisibleTo kullanırken dikkat edilmesi gereken bazı şeyler var, özellikle PublicKey anlaşılması kolay değil, bu InternalsVisibleTo'yu nasıl kullanacağımızdan bahsedelim:

Öncelikle varsayımı açıklayalım: Project1 fonksiyonel bir proje ve Project1.Test (assembly adı: Project1.Test.dll) Project1 için bir test projesidir.

1. Project1'in Assembly.cs dosyasını açın ve dosyanın sonuna şu cümleyi ekleyin:


PublicKey=****** Project1.Test.dll açık anahtar ile değiştirilmelidir, PublicKey'i nasıl alınacağı konusunda makalenin sonundaki Notlar bölümüne bakınız.

2. Namespace'i doğrulayın: System.Runtime.CompilerServices Assembly.cs'nin namespace referansına eklenir, çünkü InternalsVisibleTo System.Runtime.CompilerService isim alanında yer alır.

Notes:

1. Bir Açık Anahtarı nasıl edinebilirim?

C: Komut satırının altında sn -tp Project1.Test.dll kullanarak PublicKey ve PublicKeyToken görebilirsiniz

2. Project1 güçlü isimli bir projeyse, InternalsVisibleTo bir PublicKey'i belirtmek zorundadır, bu yüzden Project1.Test de InternalsVisibleTo'yu doğru kullanmak için güçlü bir imza kullanmak zorundadır, aksi takdirde derleme hata yapar, eğer Project1 güçlü imza kullanmazsa, Böylece Project1.Test güçlü imzalar kullanmak zorunda değildir ve InternalsVisibleTo kullanılırken sadece montaj adı gerekir ve PuklicKey ayarlamaya gerek yoktur.




Önceki:InternalsVisibleToAttribute, dahili üyeyi belirtilen dost assembly ile açıklar
Önümüzdeki:[Efsane] HttpApplication nesnesi Init metodu sadece bir kez mi çalıştırılır?
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com