27 votes

À l'aide de méthodes d'extension dans .NET 2.0?

Je veux faire cela, mais obtenir cette erreur:

Erreur 1 Ne peut pas définir une nouvelle méthode d'extension, car le compilateur type 'System.Moment de l'exécution.CompilerServices.ExtensionAttribute' ne peut pas être trouvé. Êtes-vous manque une référence à System.Core.dll? [ciselée chemin stuff]

J'ai vu quelques réponses ici que dit, vous devez définir cet attribut vous-même.

Comment dois-je faire?

EDIT: C'est ce que j'ai:

[AttributeUsage ( AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method )]
public sealed class ExtensionAttribute : Attribute
{
	public static int MeasureDisplayStringWidth ( this Graphics graphics, string text )
	{

	}
}

52voto

Marc Gravell Points 482669

Comme suit:

// you need this once (only), and it must be in this namespace
namespace System.Runtime.CompilerServices
{
    [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class
         | AttributeTargets.Method)]
    public sealed class ExtensionAttribute : Attribute {}
}
// you can have as many of these as you like, in any namespaces
public static class MyExtensionMethods {
    public static int MeasureDisplayStringWidth (
            this Graphics graphics, string text )
    {
           /* ... */
    }
}

Sinon, il suffit d'ajouter une référence à LINQBridge.

3voto

Justin Niessner Points 144953

Suivez les instructions ici: Méthodes d'Extension dans .NET 2.0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X