Sdílet prostřednictvím


Postupy: Implementace a volání vlastní metody rozšíření (Průvodce programováním v C#)

Toto téma ukazuje, jak implementovat vlastní rozšíření metody pro typ v .NET Framework, knihovna tříd, nebo jakékoli jiné.Typ sítě, který chcete rozšířit.Kód klienta pomocí metod vaší rozšíření přidáte odkaz na knihovnu DLL, která je obsahuje a přidáním pomocí směrnice, která určuje obor názvů, ve kterém jsou definovány metod rozšíření.

Definovat a volat metodu rozšíření

  1. Definovat statické třídy obsahovat rozšíření metody.

    Třída musí být viditelný pro kód klienta.Další informace o usnadnění pravidel naleznete v Modifikátory přístupu (Průvodce programováním v C#).

  2. Implementovat metodu rozšíření jako statické metody s alespoň stejně viditelné jako třída obsahující.

  3. První parametr metody Určuje typ, který pracuje metoda musí být před s této modifikátor.

  4. Volající kód přidejte using směrnice zadat oboru názvů , která obsahuje metodu třídy rozšíření.

  5. Volání metody, jako kdyby byly metody instance na typu.

    Poznámka: první parametr není zadán voláním kódu, protože představuje typ, na kterém se používá operátor, kompilátor již zná typ objektu.Máte poskytnout argumenty pro parametry 2 prostřednictvím n.

Příklad

Následující příklad používá způsob rozšíření s názvem WordCount v CustomExtensions.StringExtension třídy.Metoda pracuje String třídy, která je určena jako první parametr metody.CustomExtensions Oboru názvů je importován do oboru názvů aplikace a je volána metoda uvnitř Main metoda.

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);
        }
    }
}

Probíhá kompilace kódu

Chcete-li spustit tento kód zkopírujte a vložte jej do Visual C# konzole aplikace Projekt, který byl vytvořen v Visual Studio.Ve výchozím nastavení cíle tohoto projektu verze 3.5 .NET Framework, a obsahuje odkaz na System.Core.dll a using směrnice pro System.Linq.Pokud z projektu chybí jeden nebo více těchto požadavků, můžete je přidat ručně.Další informace naleznete v tématu Postupy: Vytvoření projektu LINQ.

Zabezpečení

Rozšíření metody představují konkrétní slabých.Nikdy použitím zosobnit stávajících metod typu, protože všechny Kolize názvů budou vyřešeny ve prospěch instance nebo statické metody, které jsou definovány podle typu sám.Rozšíření metody nelze získat přístup k jakékoli osobní data ve třídě rozšířený.

Viz také

Referenční dokumentace

Metody rozšíření (Průvodce programováním v C#)

Statické třídy a jejich členové (Průvodce programováním v C#)

protected (Referenční dokumentace jazyka C#)

internal (Referenční dokumentace jazyka C#)

public (Referenční dokumentace jazyka C#)

this (Referenční dokumentace jazyka C#)

namespace (Referenční dokumentace jazyka C#)

Koncepty

Průvodce programováním v C#

Další zdroje

LINQ (Language-Integrated Query)