.NET Sınıf Kitaplığı Bölüm 7’deki Yenilikler: Yeni Veri Ek Açıklamaları

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. Yakın zamanda ADO.NET’te eşzamansız yöntemler kullanıma sunulduktan sonra, bugünün 7. bölümü yeni veri ek açıklamaları hakkındadır.


ad alanı System.ComponentModel.DataAnnotations .NET 3.5 Service Pack 1’de kullanıma sunulmuştur. Kullanıcı arabirimine şekil sunumu veya giriş doğrulama hakkında meta bilgiler sağlamak için .NET veri sınıflarını ve .NET iş nesnesi sınıflarını veya bunların özelliklerini etiketlemek için kullanılabilen .NET özniteliklerini içerir. Veri ek açıklamaları ilk olarak ASP.NET Dynamic Data’da, ardından WCF RIA Service ve ASP.NET Model Binding’in yanı sıra ADO.NET Entity Framework’te kullanıldı.

Başlangıçta aşağıdaki gibi veri ek açıklamaları vardı [Required], [Range], [StringLength] VE [RegularExpression]. .NET 4.5’te bazı veri ek açıklamaları eklendi, tabloya bakın. ADO.NET Entity Framework ilk kod modelindeki eşleme belirtimi sınıfları, alt ad alanında bulunur System.ComponentModel.DataAnnotations.Schema ve zaten ADO.NET Entity Framework 4.1 eklentisiyle tanıtıldılar.


ek açıklama sınıfı​

Algı​

UrlÖzniteliği​

Değerin bir URL olup olmadığını doğrulayın​

Telefon Özniteliği​

Değerin bir telefon numarası olup olmadığını doğrulayın​

MinLengthÖzelliği​

Değerin minimum uzunluğu karşılayıp karşılamadığını doğrulayın​

MaxLengthAttribute​

Değerin maksimum uzunluğu karşılayıp karşılamadığını doğrulayın​

Dosya Uzantıları Özniteliği​

Değerin, belirli bir dosya adı uzantısına sahip bir dosya adı olup olmadığını doğrular​

E-postaAdresiÖzniteliği​

Değerin bir e-posta adresi olup olmadığını doğrulayın​

Kredi Kartı Özniteliği​

Değerin bir kredi kartı numarası olup olmadığını doğrulayın​

Özniteliği Karşılaştır​

Bir değerin diğerine eşit olup olmadığını doğrula​

Veri ek açıklamaları herhangi bir .NET sınıfına atanabilir ve böylece örneklerin kontrolü (doğrulanması) program kodu tarafından tetiklenebilir. Aşağıdaki liste, bir müşteri için birçok ek açıklama içeren bir .NET sınıfını göstermektedir. .NET 4.5’teki varsayılan veri ek açıklamalarına ek olarak, son sayıda sunulan kendinden tanımlı doğrulama da vardır. [Choice] kullanmak için.

/// <summary>
/// Eine mit validierenden Datenannotationen versehende .NET-Klasse
/// </summary>
class Kunde
{
[Required]
[MinLength(4)]
[RegularExpression("K-[0-9]*", ErrorMessage = "Kundennummer
muss so aufgebaut sein: K-00000")]
public string KundenID { get; set; }
[MaxLength(30)]
public string Firmenname { get; set; }

[Required]
[MinLength(1)]
[MaxLength(20)]
public string Vorname { get; set; }

[Required]
[MinLength(2)]
[MaxLength(30)]
public string Nachname { get; set; }

[EmailAddress]
public string EMail { get; set; }

[Phone]
public string Telefon { get; set; }

[CreditCard]
public string Kreditkarte { get; set; }

public string Website { get; set; } [Range(0, 99999999999999999)] public double Umsatz { get; set; } [Compare("Kennwort2")] public string Kennwort1 { get; set; } public string Kennwort2 { get; set; } Bir sonraki liste, sınıfın hatalı bir örneğinin oluşturulmasını gösterir. [I]müşteri[/I]: Müşteri kodu yanlış yapılandırılmış. İsim eksik. Ciro 0 olarak belirtilemez ve kayıtlı iki şifre eşleşmiyor. public static void Run() { var k = new Kunde(); k.Firmenname = "www.IT-Visions.de"; k.Vorname = ""; k.Nachname = "Schwichtenberg"; k.KundenID = "K1111"; k.Telefon = "+49 (201) 7490-700"; k.Website = "http://www.IT-Visions.de"; k.Umsatz = -1; k.Kreditkarte = "4111 1111 1111 1111 "; // Visa-Beispielnummer k.Kennwort1 = "geheim"; k.Kennwort2 = "geheimer"; Console.WriteLine("Kundendaten erfasst..."); // überprüfung eines Kunden Console.WriteLine("Kunde wird nun überprüft:"); var validationResults = Validate(k); if (validationResults.Count > 0) { PrintValErrors(validationResults); } else { Console.WriteLine("Kunde ist OK!"); } } /// <summary> /// Validierung eines beliebigen annotierten .NET-Objekts /// </summary> private static List<ValidationResult> Validate(object obj) { var validationContext = new ValidationContext(obj); var validationResults = new List<ValidationResult>(); Validator.TryValidateObject(obj, validationContext, validationResults, true); return validationResults; } /// <summary> /// Ausgabe einer Liste von Validierungsfehlern /// </summary> public static void PrintValErrors(List<ValidationResult> veList) { Console.ForegroundColor = ConsoleColor.Red; foreach (var ve in veList) { Console.WriteLine("########### Fehler: " + ve.ErrorMessage); foreach (var m in ve.MemberNames) { Console.WriteLine(" bei Eigenschaft " + m); } } Console.ForegroundColor = ConsoleColor.Gray; } .NET Framework, sürüm 4.0’dan beri sınıflar sağladığından, bu nesnenin denetlenmesini etkinleştirmek fazla zaman almaz. [I]Doğrulama Bağlamı[/I] VE [I]doğrulayıcı[/I] (her ikisi de ad alanında [I]System.ComponentModel.DataAnnotations[/I]). Bir öğenin kontrol edilmesi için önce bir tane oluşturmanız gerekir [I]Doğrulama Bağlamı[/I] ve ardından sınıfın statik doğrulama yöntemlerinden birini çağırır. [I]doğrulayıcı[/I] AÇIK. Sırasında [I]Nesneyi Doğrula()[/I] ile ilk hatada [I]Doğrulama istisnası[/I] dışarı çıkmak, teslim etmek [I]TestValidateObject()[/I] dönüş değeri olarak bir bool değeri ve çıkış parametresi olarak bir hata listesi olarak [I]Liste[/I]. İkinci liste de hata çıktısını gösterir. Sınıf [I]Doğrulama sonucu[/I] iki özelliği vardır: bir hata mesajı ve ilişkili olduğu sınıfın özelliklerinin bir listesi. Bunun tersi de beklenebilir. Listeyi özelliklere göre gruplamak için bir LINQ komutu da kullanabilirsiniz: var FehlerGruppierNachProperty = from ve in veList group ve by ve.MemberNames into m select new { Member = m.Key, Errors = m }; () Haberin Sonu
 
Üst