2008-11-20 20 views

Respuesta

18

Se llama a un método genérico - por lo que en su caso, el método puede ser declarado de esta manera:

public T Create<T>() 

puede especificar el tipo de argumento entre paréntesis angulares, tal como lo haría para crear una instancia de un tipo genérico:

List<Event> list = new List<Event>(); 

¿Eso ayuda?

Una diferencia entre métodos genéricos y genéricos tipos es que el compilador puede tratar de inferir el argumento de tipo. Por ejemplo, si su método Create estaban en su lugar:

public T Copy<T>(T original) 

usted podría llamar

Copy(someEvent); 

y el compilador podría inferir que significaba:

Copy<Event>(someEvent); 
+1

Ojalá pudiera elegir dos respuestas correctas. Gracias un millón: D – inspite

+0

¿Sería esto una forma de inyección de dependencia? –

+0

@mmmshuddup: No, no lo diría. –

0

Es la forma en que usted menciona un método genérico en C#.

Cuando se define un método genérico que código como este:

return-type MethodName<type-parameter-list>(parameter-list) 

Cuando se llama a un método genérico, el compilador generalmente infiere el parámetro de tipo de los argumentos especificados, como en este ejemplo:

Array.ForEach(myArray, Console.WriteLine); 

En este ejemplo, si "myArray" es una matriz de cadenas, llamará a Array.ForEach <cadena> y si es una matriz int, llamará a Array.ForEach <int>.

A veces, es imposible para el compilador deducir el tipo de los parámetros (al igual que en su ejemplo, donde no hay parámetros). En estos casos, debe especificarlos de forma manual así.

0

Esta sintaxis solo es aplicar genéricos a un método. Normalmente se usa para escenarios en los que desea controlar el tipo de devolución del método. Encontrará mucho este tipo de sintaxis en el código que usa un marco IoC.