InternalsVisibleToAttribute(String) Oluşturucu
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen arkadaş derlemesinin InternalsVisibleToAttribute adıyla sınıfının yeni bir örneğini başlatır.
public:
InternalsVisibleToAttribute(System::String ^ assemblyName);
public InternalsVisibleToAttribute (string assemblyName);
new System.Runtime.CompilerServices.InternalsVisibleToAttribute : string -> System.Runtime.CompilerServices.InternalsVisibleToAttribute
Public Sub New (assemblyName As String)
Parametreler
- assemblyName
- String
Arkadaş derlemesinin adı.
Örnekler
İmzalı derlemeler
Aşağıdaki örnek, imzalı derlemede adlı AppendDirectorySeparator
bir yöntemi başka bir internal
imzalı derlemeye görünür hale getirmek için özniteliğini kullanırInternalsVisibleToAttribute. İç yöntem içeren bir FileUtilities
AppendDirectorySeparator
sınıf tanımlar. InternalsVisibleToAttribute özniteliği, sınıfını içeren derlemeye FileUtilities
uygulanır. özniteliği adlı Friend1
derlemenin bu iç üyeye erişmesine izin verir.
//
// The source code should be saved in a file named Example1.cs. It
// can be compiled at the command line as follows:
//
// csc /t:library /keyfile:<snkfilename> Assembly1.cs
//
// The public key of the Friend1 file should be changed to the full
// public key stored in your strong-named key file.
//
using System;
using System.IO;
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Friend1, PublicKey=002400000480000094" +
"0000000602000000240000525341310004000" +
"001000100bf8c25fcd44838d87e245ab35bf7" +
"3ba2615707feea295709559b3de903fb95a93" +
"3d2729967c3184a97d7b84c7547cd87e435b5" +
"6bdf8621bcb62b59c00c88bd83aa62c4fcdd4" +
"712da72eec2533dc00f8529c3a0bbb4103282" +
"f0d894d5f34e9f0103c473dce9f4b457a5dee" +
"fd8f920d8681ed6dfcb0a81e96bd9b176525a" +
"26e0b3")]
public class FileUtilities
{
internal static string AppendDirectorySeparator(string dir)
{
if (! dir.Trim().EndsWith(Path.DirectorySeparatorChar.ToString()))
return dir.Trim() + Path.DirectorySeparatorChar;
else
return dir;
}
}
'
' The source code should be saved in a file named Example1.cs. It
' can be compiled at the command line as follows:
'
' vbc Assembly1.vb /t:library /keyfile:<snkfilename>
'
' The public key of the Friend1 file should be changed to the full
' public key stored in your strong-named key file.
'
Imports System.IO
Imports System.Runtime.CompilerServices
<Assembly:InternalsVisibleTo("Friend1, PublicKey=002400000480000094" + _
"0000000602000000240000525341310004000" + _
"001000100bf8c25fcd44838d87e245ab35bf7" + _
"3ba2615707feea295709559b3de903fb95a93" + _
"3d2729967c3184a97d7b84c7547cd87e435b5" + _
"6bdf8621bcb62b59c00c88bd83aa62c4fcdd4" + _
"712da72eec2533dc00f8529c3a0bbb4103282" + _
"f0d894d5f34e9f0103c473dce9f4b457a5dee" + _
"fd8f920d8681ed6dfcb0a81e96bd9b176525a" + _
"26e0b3")>
Public Class FileUtilities
Friend Shared Function AppendDirectorySeparator(dir As String) As String
If Not dir.Trim().EndsWith(Path.DirectorySeparatorChar) Then
Return dir.Trim() + Path.DirectorySeparatorChar
Else
Return dir
End If
End Function
End Class
Aşağıdaki örnek adlı Friend1
tanımlayıcı adlı bir derlemede derlenmişse, yöntemi derlemenin FileUtilities.AppendDirectorySeparator
içinde Assembly1
olsa bile yöntemini başarıyla çağırabilir. C# dilinde komut satırından derleniyorsanız, derleyici dış başvurulara bağlandığında arkadaş derlemesinin adının kullanılabilir olduğundan emin olmak için /out derleyici anahtarını kullanmanız gerektiğini unutmayın.
//
// The assembly that exposes its internal types to this assembly should be
// named Assembly1.dll.
//
// The public key of this assembly should correspond to the public key
// specified in the class constructor of the InternalsVisibleTo attribute in the
// Assembly1 assembly.
//
#using <Assembly1.dll> as_friend
using namespace System;
void main()
{
String^ dir = L"C:\\Program Files";
dir = FileUtilities::AppendDirectorySeparator(dir);
Console::WriteLine(dir);
}
// The example displays the following output:
// C:\Program Files\
//
// The source code should be saved in a file named Friend1.cs. It
// can be compiled at the command line as follows:
//
// csc /r:Assembly1.dll /keyfile:<snkfilename> /out:Friend1.dll Friend1.cs
//
// The public key of the Friend1 assembly should correspond to the public key
// specified in the class constructor of the InternalsVisibleTo attribute in the
// Assembly1 assembly.
//
using System;
public class Example
{
public static void Main()
{
string dir = @"C:\Program Files";
dir = FileUtilities.AppendDirectorySeparator(dir);
Console.WriteLine(dir);
}
}
// The example displays the following output:
// C:\Program Files\
'
' The source code should be saved in a file named Friend1.vb. It
' can be compiled at the command line as follows:
'
' vbc Friend1.vb /r:Assembly1.dll /keyfile:<snkfilename>
'
' The public key of the Friend1 assembly should correspond to the public key
' specified in the class constructor of the InternalsVisibleTo attribute in the
' Assembly1 assembly.
'
Module Example
Public Sub Main()
Dim dir As String = "C:\Program Files"
dir = FileUtilities.AppendDirectorySeparator(dir)
Console.WriteLine(dir)
End Sub
End Module
' The example displays the following output:
' C:\Program Files\
Aşağıdaki örnek, imzalanmamış bir derlemenin üyesini internal
başka bir imzasız derlemeye görünür hale getirmek için özniteliğini kullanırInternalsVisibleToAttribute. özniteliği, adlı derlemedeki yönteminin internal
StringLib.IsFirstLetterUpperCase
adlı UtilityLib
Friend2
derlemedeki koda görünür olmasını sağlar. UtilityLib.dll kaynak kodu aşağıdadır:
using System;
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleToAttribute("Friend2")]
namespace Utilities.StringUtilities
{
public class StringLib
{
internal static bool IsFirstLetterUpperCase(String s)
{
string first = s.Substring(0, 1);
return first == first.ToUpper();
}
}
}
Imports System.Runtime.CompilerServices
<assembly: InternalsVisibleTo("Friend2")>
Namespace Utilities.StringUtilities
Public Class StringLib
Friend Shared Function IsFirstLetterUpperCase(s As String) As Boolean
Dim first As String = s.Substring(0, 1)
Return first = first.ToUpper()
End Function
End Class
End Namespace
İmzasız derlemeler
Aşağıdaki örnek, derlemenin Friend2
kaynak kodunu sağlar. C# dilinde komut satırından derleniyorsanız, derleyici dış başvurulara bağlandığında arkadaş derlemesinin adının kullanılabilir olduğundan emin olmak için /out derleyici anahtarını kullanmanız gerektiğini unutmayın.
#using <UtilityLib.dll> as_friend
using namespace System;
using namespace Utilities::StringUtilities;
void main()
{
String^ s = "The Sign of the Four";
Console::WriteLine(StringLib::IsFirstLetterUpperCase(s));
}
using System;
using Utilities.StringUtilities;
public class Example
{
public static void Main()
{
String s = "The Sign of the Four";
Console.WriteLine(StringLib.IsFirstLetterUpperCase(s));
}
}
Imports Utilities.StringUtilities
Module Example
Public Sub Main()
Dim s As String = "The Sign of the Four"
Console.WriteLine(StringLib.IsFirstLetterUpperCase(s))
End Sub
End Module
Açıklamalar
InternalsVisibleToAttribute Oluşturucu, iç ve özel korumalı türlerine ve geçerli derlemenin üyelerine erişimi olan bir derleme olan bir arkadaş derlemesi tanımlar.
Hem geçerli derleme hem de arkadaş derlemesi imzasız olmalı veya her ikisi de tanımlayıcı bir adla imzalanmalıdır. (Tanımlayıcı adlandırılmış derlemeler hakkında daha fazla bilgi için bkz. İçerik Oluşturucu ve tanımlayıcı adlandırılmış derlemeleri kullanma.) her ikisi de imzasızsa, assemblyName
bağımsız değişken bir dizin yolu veya dosya uzantısı olmadan belirtilen arkadaş derlemesinin adından oluşur. Her ikisi de imzalıysa, assemblyName
dizin yolu veya dosya adı uzantısı olmadan arkadaş derlemesinin adından ve tam ortak anahtarından oluşur (ancak ortak anahtar belirtecini içermez). Kültür, sürüm veya işlemci mimarisi bilgileri sağlayanlar gibi bir tanımlayıcı adın diğer bileşenleri bağımsız değişkende assemblyName
belirtilemez.
Önemli
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 derlediği derlemenin adını henüz oluşturmadığından bu gereklidir. Visual Basic derleyicisi için /out derleyici 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.
Tanımlayıcı adlı bir anahtar (.snk) dosyasından tam ortak anahtarı almak için Sn.exe (Tanımlayıcı Ad Aracı ) kullanabilirsiniz. Bunu yapmak için aşağıdaki adımları gerçekleştirin:
Ortak anahtarı tanımlayıcı adlı anahtar dosyasından ayrı bir dosyaya ayıklayın:
Sn -psnk_fileoutfile
Konsolda tam ortak anahtarı görüntüleyin:
Sn -tpoutfile
Tam ortak anahtar değerini kopyalayıp kaynak kodunuz içine yapıştırın.
özniteliğini InternalsVisibleToAttribute kullanma hakkında daha fazla bilgi için aşağıdaki makalelere bakın:
Şunlara uygulanır
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin