c# - que - ¿Pueden los métodos de extensión aplicarse a las interfaces?
que es un metodo de extension c# (1)
Por supuesto que pueden; la mayor parte de Linq se basa en métodos de extensión de interfaz.
Las interfaces fueron en realidad una de las fuerzas impulsoras para el desarrollo de métodos de extensión; dado que no pueden implementar ninguna de sus propias funcionalidades, los métodos de extensión son la forma más fácil de asociar códigos reales con definiciones de interfaces.
Consulte la clase Enumerable para obtener una colección completa de métodos de extensión IEnumerable<T>
en IEnumerable<T>
. Para implementar uno, es lo mismo que implementar uno para una clase:
public static class TopologyExtensions
{
public static void CountNodes(this ITopology topology)
{
// ...
}
}
No hay nada particularmente diferente sobre los métodos de extensión en lo que respecta a las interfaces; un método de extensión es simplemente un método estático para el cual el compilador aplica un poco de azúcar sintáctica para que parezca que el método es parte del tipo de objetivo.
¿Es posible aplicar un método de extensión a una interfaz? (Pregunta C #)
Eso es por ejemplo para lograr lo siguiente:
crear una interfaz de ITopology
crear un método de extensión para esta interfaz (p. ej., static int público CountNodes (este topologíaIop de ITopology))
luego, al crear una clase (p. ej. MyGraph) que implementa ITopology, entonces automáticamente tendría la extensión Count Nodes.
De esta forma, las clases que implementan la interfaz no deberían tener un nombre de clase establecido para alinearse con lo que se definió en el método de extensión.