Aracılığıyla paylaş


Uzantı Metotları

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.

Uzantı yöntemleri, örnek yöntemi çağrısı söz dizimi kullanılarak statik yöntemlerin çağrılmasını sağlayan bir dil özelliğidir. Bu yöntemler, yöntemin üzerinde çalışıldığı örneği temsil eden en az bir parametre almalıdır.

Bu tür uzantı yöntemlerini tanımlayan sınıfa "sponsor" sınıfı denir ve statik olarak bildirilmesi gerekir. Uzantı yöntemlerini kullanmak için sponsor sınıfını tanımlayan ad alanını içeri aktarması gerekir.

❌ Özellikle sahip olmadığınız türlerde uzantı yöntemlerini gereksizce tanımlamaKTAN KAÇıNıN.

Bir türe ait kaynak kodunuz varsa, bunun yerine normal örnek yöntemlerini kullanmayı göz önünde bulundurun. Sahip değilseniz ve bir yöntem eklemek istiyorsanız, çok dikkatli olun. Uzantı yöntemlerinin yaygın kullanımı, bu yöntemlerin eklenmesi için tasarlanmamış türlerin API'lerini karmaşık hale getirme potansiyeline sahiptir.

✔️ Aşağıdaki senaryolardan herhangi birinde uzantı yöntemlerini kullanmayı GÖZ ÖNÜNDE BULUNDURUN:

  • Her bir arabirimin uygulamasıyla ilgili yardımcı işlevsellik sağlamak için, eğer bahsedilen işlevsellik temel arabirim açısından yazılabiliyorsa. Bunun nedeni, somut uygulamaların arabirimlere başka türlü atanamamasıdır. Örneğin, LINQ to Objects işleçler tüm IEnumerable<T> türler için uzantı yöntemleri olarak uygulanır. Bu nedenle, tüm IEnumerable<> uygulamalar otomatik olarak LINQ etkindir.

  • Bir örnek yöntemi bir türe bağımlılık eklediğinde ancak böyle bir bağımlılık bağımlılık yönetim kurallarını bozduğunda. Örneğin, String öğesinden System.Uri öğesine olan bağımlılık büyük olasılıkla arzu edilmez ve bu nedenle String.ToUri() döndüren System.Uri nesne yöntemi, bağımlılık yönetimi perspektifinden yanlış bir tasarım olabilir. Statik bir uzantı yöntemi olan Uri.ToUri(this string str), dönen System.Uri çok daha iyi bir tasarım olacaktır.

❌ üzerinde System.Objectuzantı yöntemlerini tanımlamaKTAN KAÇıNıN.

VB kullanıcıları, uzantı yöntemi söz dizimini kullanarak nesne başvurularında bu tür yöntemleri çağıramaz. VB, bir başvurunun Object olarak bildirilmesinin üzerindeki tüm yöntem çağrılarını geç bağlamaya zorlaması nedeniyle (çalışma zamanında çağrılan gerçek üye belirlenirken), uzantı yöntemlerine olan bağlamalar derleme zamanında (erken bağlanma) belirlendiği için bu tür yöntemleri çağırmayı desteklemez.

Kılavuzun, aynı bağlama davranışının bulunduğu veya uzantı yöntemlerinin desteklenmediği diğer diller için geçerli olduğunu unutmayın.

❌ Arabirimlere yöntem eklemek veya bağımlılık yönetimi için olmadığı sürece uzantı yöntemlerini genişletilmiş türle aynı ad alanına KOYMAYIN.

❌ Farklı ad alanları içinde olsalar bile aynı imzaya sahip iki veya daha fazla uzantı yöntemi tanımlamaktan KAÇıNıN.

✔️ Tür bir arabirimse ve uzantı yöntemlerinin çoğu veya her durumda kullanılması amaçlanıyorsa, genişletilmiş türle aynı ad alanında uzantı yöntemleri tanımlamayı GÖZ ÖNÜNDE BULUNDURUN.

❌ Normalde diğer özelliklerle ilişkili ad alanlarına bir özellik uygulayan uzantı yöntemlerini TANıMLAMAYIN. Bunun yerine, bunları ait oldukları özellik ile ilişkili ad alanında tanımlayın.

❌ Uzantı yöntemlerine ayrılmış ad alanlarının genel adlandırmasını ÖNLE (ör. "Uzantılar"). Bunun yerine açıklayıcı bir ad (örneğin, "Yönlendirme") kullanın.

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