Aracılığıyla paylaş


Nasıl yapılır: Özel bir Genişletme Yöntemi Uygulama ve Arama (C# Programlama Kılavuzu)

Bu konuda herhangi bir türü için kendi uzantısı yöntemleri gösterilmiştir .net Framework sınıf kitaplığı, ya da başka.Genişletmek istediğiniz ağ türü.İstemci kodu uzantısı yöntemleriniz kullanabilir, bunları içeren dll Dosyasının bir başvuru ekleyerek ve ekleyerek bir kullanarak uzantısı yöntemleri tanımlı ad alanýný belirtir yönergesi.

Uzantı yöntemini çağırın ve tanımlamak için

  1. Statik bir tanımla sınıfı uzantısı yöntemi içerecek.

    Sınıf istemci kodu görünür olması gerekir.Erişilebilirlik kuralları hakkında daha fazla bilgi için bkz: Erişim Değiştiricileri (C# Programlama Kılavuzu).

  2. En azından uzantısı yöntemi ile bir static yöntem olarak uygulamak içeren sınıfla aynı ölçüde görülebilir.

  3. Yöntemin birinci parametre yöntemi üzerinde işlem türünü belirtir; ile gelmelidir Bu değiştirici.

  4. Arama kodu eklemek bir using yönergesi belirtmek için ad uzantısı yöntemi sınıfını içeren.

  5. Örnek yöntemleri türü yokmuş gibi yöntemleri çağırın.

    İlk parametre belirtilmezse işleç uygulanmakta olan türü temsil ettiğinden kodu çağırarak ve derleyici, nesne türü zaten bilir unutmayın.Yalnızca bağımsız değişkenler parametre 2 sağlamak zorunda n.

Örnek

Aşağıdaki örnek adlı bir uzantısı yöntemi uygulayan WordCount , CustomExtensions.StringExtension sınıfı.Yöntem üzerinde çalışır String ilk yöntemi parametre olarak belirtilen sınıfı.CustomExtensions Ad alanı uygulama ad alanını içe aktarılır ve içinde yöntemi çaðrýlýr Main yöntemi.

using System.Linq;
using System.Text;
using System;

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;
        }
    }
}
namespace Extension_Methods_Simple
{
    //Import the extension method namespace. 
    using CustomExtensions;
    class Program
    {
        static void Main(string[] args)
        {
            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);
        }
    }
}

Kod Derleniyor

Bu kod çalıştırmak için kopyalamak ve içinde oluşturulmuş bir Visual C# konsol uygulaması projesi yapıştırmak Visual Studio.Varsayılan olarak, bu projenin sürüm 3.5, hedefler .NET Framework, ve System.Core.dll referansı vardır ve bir using System.Linq için yönerge.Projeden bu gereksinimleri en az biri eksikse, bunları el ile ekleyebilirsiniz.Daha fazla bilgi için bkz. Nasıl yapılır: Bir LINQ Projesi Oluşturma.

Güvenlik

Hiçbir özel güvenlik açıklarını uzantısı yöntemleri sunar.Tüm ad çakışması örneği veya türüne göre tanımlanan statik yöntemi edilerek çözümlenir çünkü varolan bir tür yöntemlerde almasına asla kullanılabilir.Uzantı yöntemleri genişletilmiş sınıfındaki herhangi bir özel veri erişemez.

Ayrıca bkz.

Başvuru

Genişletme Yöntemleri (C# Programlama Kılavuzu)

Statik Sınıflar ve Statik Sınıf Üyeleri (C# Programlama Kılavuzu)

protected (C# Başvurusu)

internal (C# Başvurusu)

public (C# Başvurusu)

this (C# Başvurusu)

namespace (C# Başvurusu)

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

LINQ (Dil ile Tümleşik Sorgu)