No puede. Los métodos de instancia siempre tienen prioridad sobre los métodos de extensión, suponiendo que sean aplicables. La resolución del miembro solo considerará los métodos de extensión una vez que no haya encontrado una opción que no sea de método de extensión.
Le sugiero que simplemente cambie el nombre de su método, a menos que el punto fuera llamar este método de forma transparente con el código existente.
Si usted lo hizo tomar una IList<T>
en lugar de List<T>
, se puede crear un tipo de envoltura que implementa IList<T>
y delegados todas las llamadas en la lista envuelto, de realizar cualquier tarea adicional a medida que avanza. Luego puede también escribir un método de extensión a IList<T>
que creó el contenedor, lo que permitiría una sintaxis más fluida en algunos casos. Personalmente, prefiero el enfoque de envoltorio para derivar un nuevo tipo de colección, ya que significa que puede usarlo con sus colecciones existentes, haciendo que el código cambie potencialmente más pequeño ... pero todo depende de lo que esté tratando de hacer.
Incluso si 'list.Add (" 3 ")' sobrescribió 'List.Add' y llamó a su método de extensión, entonces debería esperar' list.Add (item) 'hacer lo mismo, lo que da como resultado una recursión infinita. – Kobi
Veo, mi pregunta es solo una cuestión de curiosidad y proporciono un código de muestra solo para mostrar lo que quiero, sin embargo, tiene razón –