tengo el siguiente código:parámetro de acción en el que <T1, T2, T3> T3 puede ser opcional
public static MyMethod()
{
...Do something
ProtectedMethod(param1, param2);
...Do something
}
protected static void ProtectedMethod(IEnumerable<string> param1, string param2, int param3 = 1)
{
... Do something
}
Tome nota del parámetro param3 opcional.
Ahora, por varias razones, necesito extraer el código del método MyMethod en su propia clase, pero no puedo extraer ProtectedMethod con él debido a todas las clases heredadas de este y debo mantener los cambios. pequeño y aislado. Así que pensé que podría tener un delegado Action <> en la nueva clase con la misma firma que ProtectedMethod.
El problema es que si declaro el delegado de esta manera:
protected readonly Action<IEnumerable<string>, string, int> m_ProtectedMethod;
El código extraído no le gusta porque dice que el método sólo se invoca con dos parámetros.
Y si declaro el delegado de este modo:
protected readonly Action<IEnumerable<string>, string> m_ProtectedMethod;
Cuando lo envío como parámetro para la nueva clase que no le gusta, ya sea porque el método se define como tener tres parámetros no dos.
Hasta ahora, la única forma en que he pensado para resolver esto es crear una versión sobrecargada de ProtectedMethod para eliminar el parámetro opcional.
¿Es esta la única opción o existe otra forma de hacerlo ya que ahora la opción preferida es tener parámetros opcionales en lugar de métodos sobrecargados?
nada relacionado, pero algo que se ve similar: http://stackoverflow.com/questions/707780/is-there-a-reasonable-approach-to-default-type-parameters-in-c-sharp- genéricos – nawfal