2010-11-11 15 views
1

J'ai été vraiment aimer ce méthode d'extension dans mon code .NET 4.0:Comment faire pour rétrograder ce morceau de code de .net 4.0 à 3.5?

public static bool In<T>(this T source, params T[] list) 
{ 
    if(null==source) throw new ArgumentNullException("source"); 
    return list.Contains(source); 
} 

Maintenant, je voudrais vraiment l'utiliser dans mon projet NET 3.5, mais il manque la méthode Contains. Comment puis-je déclasser proprement cette méthode d'extension sans trop compliquer les choses?

+3

Ce code compile pour moi dans .net 3.5. Avez-vous une utilisation de 'System.Linq'? – CodesInChaos

Répondre

9

Contient est une extension sur IEnumerable introduite en 3.5 dans le cadre de LINQ. Ce code sera compilé sous 3.5.

Si ce n'est pas alors assurez-vous que vous avez inclus

using System.Linq 
+1

Correctimondo! http://msdn.microsoft.com/en-us/library/bb352880(v=VS.90).aspx –

2

Je suis d'accord avec James Gaunt, cela devrait fonctionner sous 3,5 comme il est.

Vous avez peut-être omis d'ajouter les déclarations using System.Linq; et using System.Collections.Generic; au début de votre code?

Je suis pris par ça tout le temps.

+0

Ce code n'a pas besoin de System.Collections.Generic. Les paramètres génériques sont supportés nativement par le compilateur - aucune bibliothèque incluse. Il a juste besoin de System - pour l'exception - et System.Linq. –