.NET Framework Sınıf Kitaplığı’nın (FCL) 4.5 sürümü 947 yeni sınıf içerir. Bunlardan 10’dan fazla veya daha fazla yeni sınıfın her biri, aşağıdaki tabloda listelenen 13 FCL ad alanına girer.
Genel olarak, .NET ile gönderilen sınıfların sayısı 13.524’e yükselir.
Sınıf İstatistikleri .NET 1.0 ila 4.5
Önümüzdeki haftalarda, bir dizi makalede, .NET sınıf kitaplığında WCF, WPF, Entity Framework, WF, WIF, ASP.NET ve TPL büyük kitaplıklarını etkilemeyen ve bu nedenle etkilenmeyen on yeni özellik sunacağım. yani halkın gözünde.
.NET Sınıf Kitaplığı Bölüm 1’deki Yenilikler: Arayan Bilgileri
Bazen bir yöntemin çağıranı bilmesi gerekir, örn. B. izleme ve teşhis amaçları için. .NET 1.0’dan bu yana, sözde yığın izlemeyi kurtarma olasılığı vardır:
System.Diagnostics.StackTrace t = new System.Diagnostics.StackTrace();
foreach (var f in t.GetFrames())
{
Console.WriteLine(f);
}
Ancak, doğrudan arayanı filtrelemek her zaman biraz sıkıcıdır. .NET sınıf kitaplığının yeniliği, bir yöntemin çağıran hakkındaki bu bilgiyi doğrudan derleyiciden .NET özniteliğini kullanan bir parametre olarak almasıdır (cf. __DOSYA__ VE __ASTAR__ C++’da). Aşağıdaki şekil, bu özel parametrelerin nasıl tanımlanacağını göstermektedir. Arayan kişiye isteğe bağlı parametreler olarak görünürler. Ancak derleyicinin doldurabilmesi için boş bırakılmalıdır. Visual Studio bu parametreleri tamamen saklasaydı daha iyi olurdu.
Arayan bilgisi öznitelikleri aracılığıyla arayan bilgisi
Önceki örneğin çıktısı
Değerler derleyici tarafından enjekte edildiğinden ve çalışma zamanında belirlenmediğinden, yığın izlemede olduğu gibi, orijinal yöntem adlarını bir şaşırtmadan sonra bile çağıran bilgi özniteliklerinde görebilirsiniz. Ancak bu aynı zamanda şu anlama da gelir: çağıran yöntem adlarını kod çözücüde hala görebildiğiniz için arayan bilgisi öznitelikleri karartmayı zayıflatır:
int fhiuahfdheiadfgzaegfegfkhgetfwdhjadslf =
this.adfgzaegfegfkhgetfwdhjad (10, "Run",
"h:TFSDemoNET45NET45DemosKonsole45CS
FCLCallerInformer.cs", 21);
Hata ayıklama ve sürüm oluşturma arasında fark yoktur.
Arayan bilgi öznitelikleri, arama yapmak için kullanışlıdır. INotifyPropertyChanged– Mekanizma. Önceden, ayarlayıcıdaki her özelliğin adını olaya iletmesi gerekiyordu. Şimdi bu, bir veri sınıfında daha zarif bir şekilde çözülebilir; Arayan ÜyeAdıkullanılan öznitelik, örneğe bakın:
public void Run3()
{
var d = new Datenobjekt();
d.PropertyChanged += delegate { Console.WriteLine
("Wert geändert!"); };
d.Wert = 10;
}
...
class Datenobjekt : System.ComponentModel.INotifyPropertyChanged
{
public event System.ComponentModel.PropertyChangedEventHandler
PropertyChanged;
/// <summary>
/// Realisierung in .NET 4.5, ohne dass der Aufrufer den
/// Property-Namen übergeben muss
/// </summary>
/// <param name="propertyName"></param>
private void NotifyPropertyChanged([CallerMemberName]
String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new
System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
private int wert;
public int Wert
{
get { return wert; }
set { wert = value; NotifyPropertyChanged(); }
}
}
()
Haberin Sonu
ad alanı | yeni sınıf sayısı | gözlem |
System.IdentityModel | 216 | Windows Kimlik Vakfı (WIF |
Sistem.Web | 150 | ASP.NET Webforms ve ASP.NET MVC için yeni sınıflar |
Sistem.Windows | 143 | WPF için yeni sınıflar, özellikle şerit kontrolü |
System.Activities | 81 | Yeni iş akışı sınıfları |
Sistem.Net | 76 | HTTP ve websocket ağ programlaması için yeni sınıflar |
System.ServiceModel | 74 | WCF için yeni sınıflar |
System.ComponentModel | 38 | Veri açıklaması için yeni sınıflar |
System.Runtime | 36 | WinRT birlikte çalışabilirliği ve yük profili optimizasyonu için yeni sınıflar |
Microsoft.Build | 28 | msbuild.exe için yeni sınıflar |
Sistem verisi | 26 | ADO.NET Entity Framework için yeni sınıflar |
System.Diagnostics | 24 | Windows için Olay İzlemeye Yönelik Yeni Sınıflar (ETW) |
Sistem güvenliği | 15 | Windows Identity Foundation (WIF) için Sınıflar |
Sistem.Yansıma | 10 | montaj meta verileri için yeni sınıflar dahil |
Genel olarak, .NET ile gönderilen sınıfların sayısı 13.524’e yükselir.
Sınıf İstatistikleri .NET 1.0 ila 4.5
Önümüzdeki haftalarda, bir dizi makalede, .NET sınıf kitaplığında WCF, WPF, Entity Framework, WF, WIF, ASP.NET ve TPL büyük kitaplıklarını etkilemeyen ve bu nedenle etkilenmeyen on yeni özellik sunacağım. yani halkın gözünde.
.NET Sınıf Kitaplığı Bölüm 1’deki Yenilikler: Arayan Bilgileri
Bazen bir yöntemin çağıranı bilmesi gerekir, örn. B. izleme ve teşhis amaçları için. .NET 1.0’dan bu yana, sözde yığın izlemeyi kurtarma olasılığı vardır:
System.Diagnostics.StackTrace t = new System.Diagnostics.StackTrace();
foreach (var f in t.GetFrames())
{
Console.WriteLine(f);
}
Ancak, doğrudan arayanı filtrelemek her zaman biraz sıkıcıdır. .NET sınıf kitaplığının yeniliği, bir yöntemin çağıran hakkındaki bu bilgiyi doğrudan derleyiciden .NET özniteliğini kullanan bir parametre olarak almasıdır (cf. __DOSYA__ VE __ASTAR__ C++’da). Aşağıdaki şekil, bu özel parametrelerin nasıl tanımlanacağını göstermektedir. Arayan kişiye isteğe bağlı parametreler olarak görünürler. Ancak derleyicinin doldurabilmesi için boş bırakılmalıdır. Visual Studio bu parametreleri tamamen saklasaydı daha iyi olurdu.
Arayan bilgisi öznitelikleri aracılığıyla arayan bilgisi
Önceki örneğin çıktısı
Değerler derleyici tarafından enjekte edildiğinden ve çalışma zamanında belirlenmediğinden, yığın izlemede olduğu gibi, orijinal yöntem adlarını bir şaşırtmadan sonra bile çağıran bilgi özniteliklerinde görebilirsiniz. Ancak bu aynı zamanda şu anlama da gelir: çağıran yöntem adlarını kod çözücüde hala görebildiğiniz için arayan bilgisi öznitelikleri karartmayı zayıflatır:
int fhiuahfdheiadfgzaegfegfkhgetfwdhjadslf =
this.adfgzaegfegfkhgetfwdhjad (10, "Run",
"h:TFSDemoNET45NET45DemosKonsole45CS
FCLCallerInformer.cs", 21);
Hata ayıklama ve sürüm oluşturma arasında fark yoktur.
Arayan bilgi öznitelikleri, arama yapmak için kullanışlıdır. INotifyPropertyChanged– Mekanizma. Önceden, ayarlayıcıdaki her özelliğin adını olaya iletmesi gerekiyordu. Şimdi bu, bir veri sınıfında daha zarif bir şekilde çözülebilir; Arayan ÜyeAdıkullanılan öznitelik, örneğe bakın:
public void Run3()
{
var d = new Datenobjekt();
d.PropertyChanged += delegate { Console.WriteLine
("Wert geändert!"); };
d.Wert = 10;
}
...
class Datenobjekt : System.ComponentModel.INotifyPropertyChanged
{
public event System.ComponentModel.PropertyChangedEventHandler
PropertyChanged;
/// <summary>
/// Realisierung in .NET 4.5, ohne dass der Aufrufer den
/// Property-Namen übergeben muss
/// </summary>
/// <param name="propertyName"></param>
private void NotifyPropertyChanged([CallerMemberName]
String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new
System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
private int wert;
public int Wert
{
get { return wert; }
set { wert = value; NotifyPropertyChanged(); }
}
}
()
Haberin Sonu