Aracılığıyla paylaş


Olay Tasarımı

Uyarı

Bu içerik, Çerçeve Tasarım Yönergeleri: Kurallar, Deyimler ve Yeniden Kullanılabilir .NET Kitaplıkları için Desenler, 2. Sürüm'den Pearson Education, Inc.'in izniyle yeniden yazdırılır. Bu baskı 2008'de yayımlandı ve kitap o zamandan beri üçüncü baskıda tamamen revize edilmiştir. Bu sayfadaki bazı bilgiler güncel olmayabilir.

Olaylar, en yaygın kullanılan geri çağırma biçimidir (çerçevenin kullanıcı koduna çağrılmasına izin veren yapılar). Diğer geri çağırma mekanizmaları arasında, temsilcileri kabul eden üyeler, sanal üyeler ve arabirim tabanlı eklentiler bulunur. Kullanılabilirlik çalışmalarından elde edilen veriler, geliştiricilerin çoğunluğunun olayları diğer geri çağırma mekanizmalarına kıyasla daha rahat kullandıklarını göstermektedir. Olaylar Visual Studio ve birçok dille güzel bir şekilde tümleştirilmiştir.

İki olay grubu olduğunu unutmayın: sistem durumu değişmeden önce tetiklenen olaylar ( ön olaylar olarak adlandırılır) ve durum değişikliklerinden sonra tetiklenen olaylar (post-events) olarak adlandırılır. Form kapatılmadan önce tetiklenen bir ön olaya örnek Form.Closing olacaktır. Bir form kapatıldıktan sonra ortaya çıkan olay sonrası örneği olabilir Form.Closed.

✔️ 'Fire' veya 'trigger' yerine olaylar için 'raise' terimini kullanın.

✔️ Etkinlik işleyicisi olarak kullanılacak yeni temsilcileri el ile oluşturmak yerine System.EventHandler<TEventArgs>'ı kullanın.

✔️ Olay bağımsız değişkeni olarak bir EventArgs alt sınıfı kullanmayı düşünün, ancak olayın hiçbir zaman olay işleme metoduna veri taşımayacağından emin değilseniz, bu durumda EventArgs türünü doğrudan kullanabilirsiniz.

Bir API'yi doğrudan kullanarak EventArgs gönderirseniz, uyumluluğu bozmadan olayla birlikte taşınacak herhangi bir veri ekleyemezsiniz. Bir alt sınıf kullanıyorsanız, başlangıçta tamamen boş olsa bile, gerektiğinde alt sınıfa özellikler ekleyebilirsiniz.

✔️ DO, her olayı tetiklerken korumalı bir sanal yöntem kullanır. Bu yalnızca korumasız sınıflardaki statik olmayan olaylar için geçerlidir; yapılar, korumalı sınıflar veya statik olaylar için geçerli değildir.

yönteminin amacı, türetilmiş bir sınıfın geçersiz kılma kullanarak olayı işlemesi için bir yol sağlamaktır. Geçersiz kılma, türetilmiş sınıflardaki temel sınıf olaylarını işlemenin daha esnek, daha hızlı ve daha doğal bir yoludur. Kural gereği, metodun adı "On" ile başlamalı ve olayın adıyla takip edilmelidir.

Türetilmiş sınıf, geçersiz kılmada yönteminin temel uygulamasını çağırmamayı seçebilir. Temel sınıfın düzgün çalışması için gereken yönteme herhangi bir işlem eklemeyerek buna hazırlıklı olun.

✔️ DO, bir olay oluşturan korumalı yönteme bir parametre alır.

Parametre, e olarak adlandırılmalı ve olay bağımsız değişkeni sınıfı olarak yazılmalıdır.

❌ Statik olmayan bir olayı oluştururken gönderen olarak null GEÇIRMEYİn.

✔️ DO, statik olay oluştururken gönderen olarak null değerini geçirir.

❌ Bir olayı oluştururken olay verileri parametresi olarak null geçirmeYIN.

Olay işleme yöntemine herhangi bir veri geçirmek istemiyorsanız EventArgs.Empty geçmelisiniz. Geliştiriciler bu parametrenin null olmamasını bekler.

✔️ Son kullanıcının iptal edebildiği olayları oluşturmayı göz önünde bulundurun. Bu yalnızca ön olaylar için geçerlidir.

Son kullanıcının olayları iptal etmesine izin vermek için System.ComponentModel.CancelEventArgs veya onun alt sınıfını olay bağımsız değişkeni olarak kullanın.

Özel Etkinlik İşleyicisi Tasarımı

Çerçevenin, Generikleri desteklemeyen CLR'nin önceki sürümleriyle çalışması gerektiği bazı durumlar gibi EventHandler<T> kullanılamaz. Böyle durumlarda, özel bir olay işleyici temsilcisi tasarlamanız ve geliştirmeniz gerekebilir.

✔️ DO, olay işleyicileri için void dönüş türünü kullanır.

Olay işleyicisi, büyük olasılıkla birden çok nesne üzerinde birden çok olay işleme yöntemini çağırabilir. Olay işleme yöntemlerinin bir değer döndürmesine izin verilseydi, her olay çağrısı için birden çok dönüş değeri olurdu.

✔️ object olay işleyicisinin ilk parametresinin türü olarak kullanın ve onu sender olarak çağırın.

✔️ Kesinlikle, olay işleyicisinin ikinci parametresinin türü olarak System.EventArgs veya onun alt sınıfını kullandığınızdan emin olun ve bunu e olarak adlandırın.

❌ Olay işleyicilerinde ikiden fazla parametre YOK.

Porsiyonlar © 2005, 2009 Microsoft Corporation. Tüm hakları saklıdır.

Pearson Education, Inc. tarafından Krzysztof Cwalina ve Brad Abrams'ın Yeniden Kullanılabilir .NET Kütüphaneleri için Çerçeve Tasarım Yönergeleri: Sözleşmeler, Deyimler ve Kalıplar, 2. Baskı eserinden izniyle yeniden basılmıştır. Addison-Wesley Professional tarafından Microsoft Windows Geliştirme Serisi kapsamında 22 Ekim 2008'de yayımlanmıştır.

Ayrıca bakınız