.NET Sınıf Kitaplığı Bölüm 2’deki Yenilikler: Derleme Meta Verileri

Womanne

Member
.NET Framework Sınıf Kitaplığının 4.5 sürümü 947 yeni sınıf içerir. Bir dizi makale, büyük kütüphaneleri ilgilendirmeyen ve bu nedenle kamuoyunun gözünde o kadar da fazla olmayan on yeniliği sunuyor. Hafta başında arayan bilgilerini tanıttıktan sonra, bugünün 2. bölümü derleme meta verileri hakkındadır.


Önceden, meta veriler .NET’te derleme düzeyinde depolanabiliyordu, örneğin:

[assembly: AssemblyTitle(".NET 4.5-Demo-Konsole")]
[assembly: AssemblyDescription(".NET 4.5 Demos als Konsolenanwendung")]
[assembly: AssemblyCompany("www.IT.Visions.de")]
[assembly: AssemblyProduct(".NET 4.5 Update")]
[assembly: AssemblyCopyright("Copyright © 2012")]
[assembly: ComVisible(false)]
[assembly: Guid("a5978324-95d7-4791-b224-392b9b53fd82")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

Bilgi, bir projedeki herhangi bir kaynak kod dosyasında olabilir, ancak genellikle dosyanın içine yerleştirilir. AssemblyInfo.cs/.vb.

.NET 4.5’teki yenilik, artık rasgele meta verileri derleme düzeyinde ad-değer çiftleri biçiminde depolayabilmenizdir:

[assembly: System.Reflection.AssemblyMetadata("Autor",
"Dr. Holger Schwichtenberg")]
[assembly: System.Reflection.AssemblyMetadata("Erstellungsdatum",
"16 August 2012")]
[assembly: System.Reflection.AssemblyMetadata("Website",
"www.IT-Visions.de")]

Ancak dikkatli olun: bu meta veriler, Explorer’da ayrıntılı görünümde görüntülenmez. Veriler yalnızca .NET Reflection yoluyla geri okunabilir (aşağıdaki listeye bakın). Sadece statik değerlerin belirtilebileceğine de dikkat edilmelidir. Yalnızca çalışma zamanında değerlendirilen ifadeler, örneğin yeni DateTime(2012,08,16) Onlara izin verilmiyor.

// Zugriff auf eine Assembly, z.B. aufrufende Assembly
var ass = System.Reflection.Assembly.GetCallingAssembly();
// Zugriff auf Metadatenliste
var liste = ass.GetCustomAttributes(typeof(AssemblyMetadataAttribute),
false);
if (liste != null && liste.Length > 0)
{
// Name-Wert-Paare ausgeben
foreach (AssemblyMetadataAttribute i in liste)
{
Console.WriteLine(i.Key + ": " + i.Value);
}
}


()





Haberin Sonu
 
Üst