Me gusta enviar una función de convertidor de tipo genérico a un método, pero no puedo encontrar la manera de hacerlo.¿Cómo puedo pasar un func con un parámetro de tipo genérico?
Aquí hay una sintaxis no válida que explica lo que me gusta de lograr, el problema es que no sé cómo especificar el tipo genérico junto con mi func:
public void SomeUtility(Func<T><object,T> converter)
{
var myType = converter<MyType>("foo");
}
Editar (véase también mi discusión en los comentarios con Lawrence): Por "convertidor de tipo genérico" que quería decir me gustaría pasar en un convertidor que puede convertir a cualquier tipo fuerte <T> (no objeto), por lo que la siguiente línea en mi método podría ser:
var myOtherType = converter<MyOtherType>("foo");
El delegado me gusta p culo como un parámetro sería algo como esto:
private delegate TOutput myConverterDelegate<TOutput>(object objectToConvert);
Esto es más un # exploración sintaxis/C ahora, para hacer las cosas, probablemente voy a utilizar una interfaz vez, pero espero que esto es posible de lograr con una func/delegate.
¿Es significativo el hecho de que haya especificado un tipo dentro del cuerpo del método? ¿Está insinuando que este método puede necesitar realizar conversiones contra varios tipos, en lugar de un tipo específico definido por la persona que llama? –
Sí, eso fue lo que traté de expresar como un "convertidor de tipo genérico", por lo que la siguiente línea podría ser var myOtherType = converter ("foo"); –
joeriks
Ok, entonces creo que encontrarás mi respuesta útil :) –