Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, herhangi bir .NET türü için kendi uzantı yöntemlerinizi nasıl uygulayabilirsiniz gösterilmektedir. İstemci kodu uzantı yöntemlerinizi kullanabilir. İstemci projeleri, bunları içeren derlemeye başvurmalıdır. İstemci projeleri, uzantı yöntemlerinin tanımlandığı ad alanını belirten bir using yönergesi eklemelidir.
Uzantı yöntemini tanımlamak ve çağırmak için:
- Uzantı yöntemini içerecek statik bir sınıf tanımlayın. Sınıf başka bir türün içinde yer alamaz ve istemci kodu tarafından görülebilir olmalıdır. Erişilebilirlik kuralları hakkında daha fazla bilgi için bkz . Erişim Değiştiricileri.
- Uzantı yöntemini, içeren sınıfla en az aynı görünürlüğe sahip statik bir yöntem olarak uygulayın.
- yönteminin ilk parametresi, yöntemin üzerinde çalıştığı türü belirtir; önünde bu değiştirici bulunmalıdır.
- Çağıran kodda, uzantı yöntemi sınıfını içeren ad alanını
using
belirtmek için bir yönerge ekleyin. - Yöntemleri tür üzerinde örnek yöntemler olarak çağırın.
Not
İlk parametre, işlecin uygulandığı türü temsil ettiğinden ve derleyici nesnenizin türünü zaten bildiği için kod çağrılarak belirtilmez. Yalnızca 2 ile n
arasındaki parametreler için bağımsız değişkenler sağlamanız gerekir.
Aşağıdaki örnek, CustomExtensions.StringExtension
sınıfında WordCount
adlı bir uzantı yöntemini uygular. yöntemi, ilk yöntem parametresi olarak belirtilen sınıfında çalışır String .
CustomExtensions
ad alanı uygulama ad alanına aktarılır ve Main
yönteminin içinde çağrılır.
using CustomExtensions;
string s = "The quick brown fox jumped over the lazy dog.";
// Call the method as if it were an
// instance method on the type. Note that the first
// parameter is not specified by the calling code.
int i = s.WordCount();
System.Console.WriteLine($"Word count of s is {i}");
namespace CustomExtensions
{
// Extension methods must be defined in a static class.
public static class StringExtension
{
// This is the extension method.
// The first parameter takes the "this" modifier
// and specifies the type for which the method is defined.
public static int WordCount(this string str)
{
return str.Split(new char[] {' ', '.','?'}, StringSplitOptions.RemoveEmptyEntries).Length;
}
}
}
Aşırı yükleme çözümü, türün kendisi tarafından tanımlanan örnek veya statik yöntemleri uzantı yöntemlerine tercih eder. Uzantı yöntemleri genişletilmiş sınıftaki hiçbir özel veriye erişemez.