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. |