Je l'ai vu cette syntaxe une ou deux fois maintenant, et ça commence à me inquiéter,Que signifie la méthode <ClassName>?
Par exemple:
iCalendar iCal = new iCalendar();
Event evt = iCal.Create<Event>();
Je l'ai vu cette syntaxe une ou deux fois maintenant, et ça commence à me inquiéter,Que signifie la méthode <ClassName>?
Par exemple:
iCalendar iCal = new iCalendar();
Event evt = iCal.Create<Event>();
C'est une méthode générique, Créer est déclaré avec les paramètres de type, et vérifiez ces liens pour plus d'informations:
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);
J'aimerais pouvoir choisir deux bonnes réponses. Merci mille: D – inspite
Serait-ce considéré comme une forme d'injection de dépendance? –
@mmmshuddup: Non, je ne le dirais pas. –
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.
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.
Il s'agit d'une méthode générique qui implémente le modèle Factory Method.
Merci, exactement ce que je cherchais. Thx buddy – inspite
Le premier lien est vraiment utile; les deux autres semblent cassés bien. – GDP2