En mi proyecto tengo las siguientes tres interfaces, que son implementadas por clases que administran la fusión de una variedad de objetos comerciales que tienen diferentes estructuras.¿Puedo tener un número variable de parámetros genéricos?
public interface IMerger<TSource, TDestination>
{
TDestination Merge(TSource source, TDestination destination);
}
public interface ITwoWayMerger<TSource1, TSource2, TDestination>
{
TDestination Merge(TSource1 source1, TSource2 source2, TDestination destination);
}
public interface IThreeWayMerger<TSource1, TSource2, TSource3, TDestination>
{
TDestination Merge(TSource1 source1, TSource2 source2, TSource3 source3, TDestination destination);
}
Esto funciona bien, pero yo preferiría tener una IMerger
interfaz que especifica un número variable de TSource
parámetros, algo como esto (ejemplo siguiente se utiliza params
; sé que esto no es válida C#):
public interface IMerger<params TSources, TDestination>
{
TDestination Merge(params TSource sources, TDestination destination);
}
¿Hay alguna forma de lograr esto, o algo funcionalmente equivalente?
No se puede hacer una interfaz con un número variable de argumentos, pero se puede dar el el mismo nombre para todas sus variaciones (igual que el delegado 'Func') –
Si bien es solo un pseudo código inválido, tiene más sentido escribir eso como' interfaz pública IMerger { TDestination Merge (TDestination destino, params fuentes de TSource); } '. 'params' debería venir último. Pero como dice Christian Hayter, tener una clase base es la única solución –
nawfal