Tengo dos métodos de extensión:sobrecargar elección
public static IPropertyAssertions<T> ShouldHave<T>(this T subject)
{
return new PropertyAssertions<T>(subject);
}
public static IPropertyAssertions<T> ShouldHave<T>(this IEnumerable<T> subject)
{
return new CollectionPropertyAssertions<T>(subject);
}
Ahora escribir un código que lo utiliza:
List<Customer> collection2 = new List<Customer>();
collection2.ShouldHave(); //first overload is chosen
IEnumerable<Customer> collection3 = new List<Customer>();
collection3.ShouldHave(); //second overload is chosen
Segunda sobrecarga se elige sólo si puedo especificar explícitamente el tipo IEnumerable. ¿Hay alguna forma de hacer que la segunda sobrecarga sea elegida en ambos casos?
No habrá diferencia entre '' collection1' y collection2'. Son exactamente el mismo código, solo escrito de manera diferente. – svick
@svick, sí, pero quería mostrar todas las opciones de sintaxis – SiberianGuy
Tenga en cuenta que el hecho de que sea un método de extensión es irrelevante; la resolución de sobrecarga lo maneja como un método estático normal. –