Youyuan Meclisi'ne Giriş Biliyoruz ki, bir sınıfın iç olarak tanımlanan üyeleri (tipler, yöntemler, özellikler, değişkenler, olaylar dahil) sadece aynı montajda erişilebiliyor (tabii ki burada normal yoldan bahsediyorum, yansıma yoluyla erişim hariç). Bu kural . .NET 2.0 biraz bozuk durumda, bu da bir meclisin iç üyelerini belirli üyeler tarafından erişilecek şekilde ayarlamamıza olanak tanıyor. Bu iç üyeleri içeren montaja kaynak montaj diyoruz ve montaj kümesine dost assembly denir.
Arkadaş montaj kullanımı Bu Özellik montaj seviyesinde kullanılır.
Bu şekilde, FriendAssembly programı assembly referansına girdikten sonra dahili Name özelliğine erişebilir. Genel olarak, bu assembly:InternalsVisibleTo ("FriendAssembly") AssemblyInfo.cs daha iyi konumlandırılır, sonuçta assembly seviyesinde.
InternalsToVisibleTo ne zaman kullanılmalıdır Aslında, bu özellik genel uygulamalarda kullanılmaz ve bu özelliği kötüye kullanmamalıyız. Çünkü genel olarak, iyi tasarlanmış bir meclisin dış dünyaya açık olması gerekmez. Ancak birim test senaryoları bu özelliğin avantajını kullanabilir. Bu özellikle, birim testleri için kodun bu iç üyelere erişimi olduğunu belirtebiliriz, böylece bu üyeleri birim test yapabiliriz. Ancak bu, kaynak montajda arkadaş montajının adının ölü olarak yazılmasını gerektirir ve bu da bazı güvenlik sorunlarına yol açar. Güvenlik, imza montajlarının getirilmesiyle garanti edilebilir.
InternalsToVisibleTo ve imza montajı Arkadaş meta assembly'nin adını ve açık anahtarını doğrudan InternalsVisibleTo olarak belirtebilirsiniz. FriendAssembly için açık anahtarı oluşturmak üzere VS geliştirici komut satırını kullanın:
Kaynak montajının arkadaş montajının ve açık anahtarın adını belirtin:
Aslında, arkadaş montaj kaynak montaja referans verdiğinden, imzalı montaj ise imzasız bir montaja referans verdiğinden ve imzalı montaj imzasız bir dost montajı belirtemeyeceğinden, bunlardan herhangi biri imzalanmış olduğundan, imzalanmaları gerekir.
|