Aracılığıyla paylaş


System.Exception.Data özelliği

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

System.Collections.IDictionary Özel durumla ilgili ek bilgileri depolamak ve almak için özelliği tarafından Data döndürülen nesnesini kullanın. Bilgiler, rastgele sayıda kullanıcı tanımlı anahtar/değer çifti biçimindedir. Her anahtar/değer çiftinin anahtar bileşeni genellikle tanımlayıcı bir dizedir, ancak çiftin değer bileşeni herhangi bir nesne türü olabilir.

Anahtar/değer çifti güvenliği

özelliği tarafından Data döndürülen koleksiyonda depolanan anahtar/değer çiftleri güvenli değildir. Uygulamanız iç içe bir dizi yordam çağırırsa ve her yordam özel durum işleyicileri içeriyorsa, sonuçta elde edilen çağrı yığını bu özel durum işleyicilerinin hiyerarşisini içerir. Alt düzey bir yordam özel durum oluşturursa, çağrı yığını hiyerarşisindeki herhangi bir üst düzey özel durum işleyicisi, koleksiyonda depolanan anahtar/değer çiftlerini başka bir özel durum işleyicisi tarafından okuyabilir ve/veya değiştirebilir. Bu, anahtar/değer çiftlerindeki bilgilerin gizli olmadığını ve anahtar/değer çiftlerindeki bilgiler bozulursa uygulamanızın doğru şekilde çalışacağını garanti etmeniz gerektiği anlamına gelir.

Anahtar çakışmaları

Farklı özel durum işleyicileri bir anahtar/değer çiftine erişmek için aynı anahtarı belirttiğinde anahtar çakışması oluşur. Önemli bir çakışmanın sonucu alt düzey özel durum işleyicilerinin üst düzey özel durum işleyicileriyle yanlışlıkla iletişim kurabilmesi ve bu iletişimin küçük program hatalarına neden olabilmesi nedeniyle uygulamanızı geliştirirken dikkatli olun. Ancak dikkatliyseniz, uygulamanızı geliştirmek için anahtar çakışmalarını kullanabilirsiniz.

Anahtar çakışmalarını önleme

Anahtar/değer çiftleri için benzersiz anahtarlar oluşturmak üzere bir adlandırma kuralı benimseyerek anahtar çakışmalarından kaçının. Örneğin, adlandırma kuralı uygulamanızın noktayla ayrılmış adından, çift için ek bilgiler sağlayan yöntemden ve benzersiz bir tanımlayıcıdan oluşan bir anahtar verebilir.

Products ve Suppliers adlı iki uygulamanın her birinin Sales adlı bir yöntemi olduğunu varsayalım. Ürünler uygulamasındaki Sales yöntemi, bir ürünün kimlik numarasını (stok tutma birimi veya SKU) sağlar. Tedarikçiler uygulamasındaki Satış yöntemi, bir tedarikçinin kimlik numarasını veya SID'sini sağlar. Sonuç olarak, bu örneğin adlandırma kuralı "Products.Sales.SKU" ve "Suppliers.Sales.SID" anahtarlarını verir.

Anahtar çakışmalarını kötüye kullanmak

İşlemeyi denetlemek için bir veya daha fazla özel, önceden düzenlenmiş anahtarın varlığını kullanarak anahtar çakışmalarından yararlanma. Bir senaryoda, çağrı yığını hiyerarşisindeki en yüksek düzey özel durum işleyicisinin alt düzey özel durum işleyicileri tarafından oluşan tüm özel durumları yakaladığını varsayalım. Özel anahtara sahip bir anahtar/değer çifti varsa, üst düzey özel durum işleyicisi nesnedeki IDictionary kalan anahtar/değer çiftlerini standart olmayan bir şekilde biçimlendirır; aksi takdirde, kalan anahtar/değer çiftleri normal bir şekilde biçimlendirilir.

Şimdi başka bir senaryoda, çağrı yığını hiyerarşisinin her düzeyindeki özel durum işleyicisinin sonraki alt düzey özel durum işleyicisi tarafından oluşan özel durumu yakaladığını düşünün. Ayrıca, her özel durum işleyicisi özelliği tarafından Data döndürülen koleksiyonun önceden düzenlenmiş bir anahtar kümesiyle erişilebilen bir anahtar/değer çiftleri kümesi içerdiğini bilir.

Her özel durum işleyicisi, ilgili anahtar/değer çiftinin değer bileşenini bu özel durum işleyicisine özgü bilgilerle güncelleştirmek için önceden düzenlenmiş anahtar kümesini kullanır. Güncelleştirme işlemi tamamlandıktan sonra, özel durum işleyicisi özel durumu sonraki üst düzey özel durum işleyicisine atar. Son olarak, en üst düzey özel durum işleyicisi anahtar/değer çiftlerine erişir ve tüm alt düzey özel durum işleyicilerinden birleştirilmiş güncelleştirme bilgilerini görüntüler.