Ich bin auf der Suche nach einem Äquivalent zu Objective-c's Category für die Sprache C#.
Antworten
Zu viele Anzeigen?Sie können keine Methoden zu einer Klasse hinzufügen, aber Sie können Erweiterungsmethoden verwenden, um ähnliche Effekte zu erzielen.
eine statische Klasse mit einer statischen Methode erstellen. Das erste Argument der statischen Methode wird mit "this" gekennzeichnet und die Methode wird für die Klassen mit dem Typ des Arguments dekoriert.
namespace ExtensionMethods
{
public static class MyExtensions
{
public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' },
StringSplitOptions.RemoveEmptyEntries).Length;
}
}
}
Diese Methode ist dann für alle Instanzen des Typs String verfügbar. Allerdings müssen Sie die Erweiterungsklasse immer noch über Ihre Verwendungen verfügbar haben.
Das Beispiel stammt aus einem Dokument von Microsoft, das hier verfügbar ist: http://msdn.microsoft.com/en-us/library/bb383977.aspx
Das, was dem am nächsten kommt Objective-C Kategorien in C# ist Methoden der Erweiterung .
Beachten Sie, dass C# ist eine statisch typisierte Sprache und verwendet kein dynamisches Dispatching wie Objective-C. Das bedeutet, dass die Methodenauflösung wird zur Kompilierzeit durchgeführt und nicht zur Laufzeit, wie Sie es von Objective-C gewohnt sind.
Verwandte Ressourcen: