Uzantı Metotları

Not

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 liberal kullanımı, bu yöntemlere sahip olacak şekilde tasarlanmamış türlerdeki karmaşık API'lere sahiptir.

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

  • Bir arabirimin her uygulamasıyla ilgili yardımcı işlevsellik sağlamak için, söz konusu işlevler çekirdek arabirim açısından yazılabilir. 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, öğesinden StringSystem.Uri bağımlılığı büyük olasılıkla arzu edilmez ve bu nedenle String.ToUri() örnek yönteminin döndürülmesi System.Uri bağımlılık yönetimi perspektifinden yanlış tasarım olabilir. Dönen System.Uri statik bir uzantı yöntemi Uri.ToUri(this string str) ç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'de, Nesne olarak bir başvuru bildirilmesi, üzerindeki tüm yöntem çağrılarının geç bağlanmaya zorlanmasından (çalıştırılma zamanında çağrılan gerçek üye belirlenirken), uzantı yöntemlerine bağlamalar derleme zamanında (erken sınır) belirlendiğinden VB 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. in Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraryes, 2nd Edition by Krzysztof Cwalina and Brad Abrams izniyle yeniden yazdırıldı ve 22 Ekim 2008'de Addison-Wesley Professional tarafından Microsoft Windows Geliştirme Serisi'nin bir parçası olarak yayımlandı.

Ayrıca bkz.