Aracılığıyla paylaş


System.Runtime.CompilerServices.InternalsVisibleToAttribute sınıfı

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

InternalsVisibleToAttribute özniteliği, normalde yalnızca geçerli derleme içinde görünen türlerin belirtilen bir derlemeye görünür olduğunu belirtir.

Normalde, C# veya Visual Basic'te kapsamı olaninternal türler ve üyeler yalnızca tanımlandığı derlemede görünür.Friend protected internal kapsamı olan türler ve üyeler, yalnızca kendi derlemelerinde veya kapsayan sınıflarından türeyen türlerde görünür (Protected Friend kapsamı Visual Basic'te). Kapsamı private protected olan türler ve üyeler (Private Protected Visual Basic'te kapsam), içeren sınıfta veya geçerli bütünleştirilmiş modüldeki kendi içeren sınıfından türetilen türlerde görünür.

InternalsVisibleToAttribute özniteliği, bu türlerin ve üyelerin, arkadaş derlemesi olarak bilinen belirtilen derlemedeki türler için de görünür olmasını sağlar. Bu yalnızca internal (Friend Visual Basic'te), protected internal (Protected Friend Visual Basic'te), ve private protected (Private Protected Visual Basic'te) üyeler için geçerlidir, ancak private olanlar için geçerli değildir.

Uyarı

( Visual Basic'te) üyeler söz konusu olduğunda private protected , Private Protected özniteliği erişilebilirliği yalnızca üyenin InternalsVisibleToAttribute türetilen türlere genişletir.

Öznitelik derleme seviyesinde uygulanır. Bu, bir kaynak kod dosyasının başına veya bir Visual Studio projesindeki AssemblyInfo dosyasına dahil edilebileceği anlamına gelir. özniteliğini kullanarak, geçerli derlemenin iç türlerine ve üyelerine erişebilen tek bir arkadaş derlemesi belirtebilirsiniz. Birden çok arkadaş derlemesi iki şekilde tanımlayabilirsiniz. Bunlar, aşağıdaki örnekte gösterildiği gibi tek tek derleme düzeyi öznitelikler olarak görünebilir.

[assembly:InternalsVisibleTo("Friend1a")]
[assembly:InternalsVisibleTo("Friend1b")]
<assembly:InternalsVisibleTo("Friend1a")>
<assembly:InternalsVisibleTo("Friend1b")>

Ayrıca, aşağıdaki örnekte gösterildiği gibi ayrı InternalsVisibleToAttribute etiketlerle ancak tek assembly bir anahtar sözcükle de görünebilirler.

[assembly:InternalsVisibleTo("Friend2a"), 
          InternalsVisibleTo("Friend2b")]
<Assembly:InternalsVisibleTo("Friend2a"), _
 Assembly:InternalsVisibleTo("Friend2b")>

Arkadaş derlemesi oluşturucu tarafından InternalsVisibleToAttribute tanımlanır. Hem geçerli derleme hem de arkadaş derlemesinin imzasız olması ya da her iki derlemenin de güçlü bir adla imzalanması gerekir.

Her iki derleme de imzasızsa, assemblyName parametre bir dizin yolu veya dosya adı uzantısı olmadan belirtilen arkadaş derlemesinin adından oluşur.

Her iki derleme de güçlü bir adla imzalanırsa, oluşturucunun InternalsVisibleToAttribute bağımsız değişkeni, dizin yolu veya dosya adı uzantısı olmadan derlemenin adı ve tam ortak anahtardan (ortak anahtar belirteci değil) oluşmalıdır. Güçlü adı olan bir derlemenin tam ortak anahtarını almak için, bu makalenin ilerleyen kısımlarında yer alan Tam ortak anahtarı alma bölümüne bakın. Tanımlayıcı adlandırılmış derlemelerle InternalsVisibleToAttribute kullanımına ilişkin daha fazla bilgi almak için InternalsVisibleToAttribute oluşturucuya bakın.

Bağımsız değişkene CultureInfo, Versionveya ProcessorArchitecture alanının değerlerini eklemeyin; Visual Basic, C# ve C++ derleyicileri bunu bir derleyici hatası olarak değerlendirir. Bu durumu hata olarak kabul etmeyen bir derleyici kullanırsanız (örneğin IL Assembler (ILAsm.exe)) ve derlemeler güçlü adlandırılmışsa, belirtilen arkadaş derleme, özniteliği içeren derlemeye ilk kez eriştiğinde bir MethodAccessException özel durum fırlatılır.

Bu özniteliği kullanma hakkında daha fazla bilgi için bkz . Arkadaş derlemeleri ve C++ arkadaş derlemeleri.

Tam açık anahtarı al

Güçlü adı olan bir anahtar (.snk) dosyasından tam ortak anahtarı almak için Güçlü Ad Aracı'nı (Sn.exe) kullanabilirsiniz. Bunu yapmak için aşağıdaki adımları gerçekleştirin:

  1. Açık anahtarı güçlü adlandırılmış anahtar dosyasından ayrı bir dosyaya ayıklayın.

    Sn -p <snk_file> <outfile>

  2. Konsolda tam kamu anahtarını görüntüleyin:

    Sn -tp <outfile>

  3. Tam ortak anahtar değerini kopyalayıp kaynak kodunuz içine yapıştırın.

Arkadaş derlemeyi C# ile derleyin.

Arkadaş derlemesini derlemek için C# derleyicisini kullanırsanız, /out derleyici seçeneğini kullanarak çıkış dosyasının adını (.exe veya .dll) açıkça belirtmeniz gerekir. Derleyici, dış başvurulara bağlandığı sırada oluşturduğu derlemenin adını henüz oluşturmadığından bu gereklidir. Visual Basic derleyicisi için /out derleyicisi seçeneği isteğe bağlıdır ve F# derleyicisi ile arkadaş derlemeleri derlenirken karşılık gelen -out veya -o derleyici seçeneği kullanılmamalıdır.

Arkadaş derlemesini C++ ile derleme

C++'ta, InternalsVisibleToAttribute özniteliği ile etkinleştirilen iç üyeleri bir arkadaş birleştirmesi için erişilebilir hale getirmek amacıyla, C++ yönergesinde as_friend özniteliğini kullanmanız gerekir. Daha fazla bilgi için Arkadaş Derlemeleri (C++) bölümüne bakın.