que he visto esta sintaxis un par de veces, y que está empezando a preocuparme,¿Qué significa el Método <ClassName>?
Por ejemplo:
iCalendar iCal = new iCalendar();
Event evt = iCal.Create<Event>();
que he visto esta sintaxis un par de veces, y que está empezando a preocuparme,¿Qué significa el Método <ClassName>?
Por ejemplo:
iCalendar iCal = new iCalendar();
Event evt = iCal.Create<Event>();
Es un método genérico, Crear se declara con parámetros de tipo, y consulte estos enlaces para obtener más información:
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);
Ojalá pudiera elegir dos respuestas correctas. Gracias un millón: D – inspite
¿Sería esto una forma de inyección de dependencia? –
@mmmshuddup: No, no lo diría. –
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í.
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.
Es un método genérico que implementa el patrón Factory Method.
Gracias, exactamente lo que estaba buscando. Thx buddy – inspite
El primer enlace es realmente útil; los otros dos parecen rotos sin embargo. – GDP2