2008-11-20 14 views

Répondre

18

qu'il appelle une méthode générique - donc dans votre cas, la méthode peut être déclarée comme ceci:

public T Create<T>() 

vous pouvez spécifier l'argument de type dans les crochets, comme vous le feriez pour créer une instance d'un type générique:

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

Cela aide-t-il?

Une différence entre les méthodes génériques et génériques types est que le compilateur peut essayer de déduire l'argument de type. Par exemple, si votre méthode Create étaient à la place:

public T Copy<T>(T original) 

vous pouvez simplement appeler

Copy(someEvent); 

et le compilateur déduire que vous vouliez dire:

Copy<Event>(someEvent); 
+1

J'aimerais pouvoir choisir deux bonnes réponses. Merci mille: D – inspite

+0

Serait-ce considéré comme une forme d'injection de dépendance? –

+0

@mmmshuddup: Non, je ne le dirais pas. –

0

C'est la façon dont vous mentionnez une méthode générique en C#.

Lorsque vous définissez une méthode générique vous le code comme ceci:

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

Lorsque vous appelez une méthode générique, le compilateur infère généralement le paramètre de type des arguments spécifiés, comme dans cet exemple:

Array.ForEach(myArray, Console.WriteLine); 

Dans cet exemple, si "myArray" est un tableau de chaînes, il appellera Array.ForEach < chaîne > et s'il s'agit d'un tableau int, il appellera Array.ForEach <int>.

Parfois, il est impossible pour le compilateur de déduire le type à partir des paramètres (comme dans votre exemple, où il n'y a aucun paramètre). Dans ces cas, vous devez les spécifier manuellement comme ça.

0

Cette syntaxe applique simplement des génériques à une méthode. Il est généralement utilisé pour les scénarios dans lesquels vous souhaitez contrôler le type de retour de la méthode. Vous trouverez beaucoup de ce type de syntaxe dans le code qui utilise un framework IoC.