|
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
|
Übersetzung
Original
|
Gewusst wie: Implementieren und Aufrufen einer benutzerdefinierten Erweiterungsmethode (C#-Programmierhandbuch)
So definieren und die Erweiterungsmethode aufrufen
-
Definieren Sie eine statische Klasse, die die Erweiterungsmethode enthalten soll. Die Klasse muss für den Clientcode sichtbar sein. Weitere Informationen über Zugriffsregeln finden Sie unter Zugriffsmodifizierer (C#-Programmierhandbuch). -
Implementieren Sie die Erweiterungsmethode als statische Methode mit mindestens den gleichen Sichtbarkeitseinstellungen wie die enthaltende Klasse. -
Der erste Parameter der Methode bestimmt den Typ, für den die Methode gilt, und vor dem Parameter steht der this-Modifizierer. -
Fügen Sie im Aufrufcode eine using-Direktive hinzu, um den Namespace festzulegen, der die Erweiterungsmethodenklasse enthält. -
Rufen Sie die Methoden auf, als ob sie Instanzmethoden für den Typ wären. Beachten Sie, dass der erste Parameter nicht durch den Aufruf von Code festgelegt wird, da er den Typ darstellt, auf den der Operator angewendet wird, und der Compiler kennt bereits den Typ Ihres Objekts. Sie müssen nur Argumente für Parameter 2 bis n angeben.
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); } } }