È possibile applicare un metodo di estensione a un'interfaccia? (C# questione)I metodi di estensione possono essere applicati alle interfacce?
Questo è per esempio per raggiungere il seguente:
creare un'interfaccia ITopology
creare un metodo di estensione per questa interfaccia (ad esempio int CountNodes public static (questo ITopology topologyIf))
quindi, durante la creazione di una classe (ad es. MyGraph) che implementa ITopology, avrà automaticamente l'estensione Count Nodes.
In questo modo le classi che implementano l'interfaccia non devono avere un nome di classe impostato per allinearsi a quanto definito nel metodo di estensione.
Ri: "Naturalmente" - Penso che la domanda sveli l'odore dell'architettura che menzionate implicitamente. Se è possibile avere estensioni sulle interfacce, perché le interfacce non possono contenere metodi implementati? È comprensibile pensare che entrambe le interfacce debbano essere in grado di avere metodi concreti, o, una volta che si è sicuri che non possono, pensare che i metodi di estensione non dovrebbero essere ammessi come kludge fattibile. (Ma lo sono. Non discutendo la tua eccellente risposta, solo il "naturalmente" e il link a IEnum, non [LINQ] (https://github.com/dotnet/corefx/blob/master/src/System.Linq/ src/System/Linq/Contains.cs) .;^D) C'è qualcosa di puzzolente lì! – ruffin