Özel uzantı yöntemini uygulama ve çağırma (C# Programlama Kılavuzu)
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 içinde iç içe yerleştirilemiyor ve istemci koduna görünür 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ı belirtmek için bir
using
yönerge ekleyin. - yöntemleri türünde örnek yöntemleri 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 arasında n
parametreler için bağımsız değişkenler sağlamanız gerekir.
Aşağıdaki örnek, sınıfında adlı WordCount
CustomExtensions.StringExtension
bir uzantı yöntemi uygular. yöntemi, ilk yöntem parametresi olarak belirtilen sınıfında çalışır String . Ad CustomExtensions
alanı uygulama ad alanına aktarılır ve yöntemi yöntemi içinde çağrılır Main
.
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 {0}", 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ümlemesi, türü tarafından tanımlanan örnek veya statik yöntemi uzantı yöntemlerine tercih eder. Uzantı yöntemleri genişletilmiş sınıftaki hiçbir özel veriye erişemez.