2009-04-23 16 views
6

Unter Visual Studio 2008
Kann ich eine Erweiterungsmethode erstellen, um in einem .NET Framework 2.0-Projekt zu arbeiten?Verwenden von Erweiterungsmethoden mit .NET Framework 2.0

+0

Weitere Informationen finden Sie in [mein Blog] (http://colins-corner.blogspot.com/2009/01/extension-methods-in-net-20.html) Eintrag. –

Antwort

10

Es gibt eine ugly hack, die Extension-Methoden in .Net 2.0 funktioniert; aber es wäre besser, das Framework auf 3.5 zu aktualisieren.

Alternative Quellen: 1, 2.

Kurz gesagt (von Link # 2): Extension-Methoden sind nur normale statische Methoden mit dem Attribut [Extension] markiert. Dieses Attribut wird eigentlich nur vom Compiler hinter den Kulissen hinzugefügt. In .NET 3.5 lebt es in System.Core, so definieren Sie einfach Ihr eigenes Attribut wie folgt:

namespace System.Runtime.CompilerServices 
{ 
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] 
    public class ExtensionAttribute : Attribute 
    { 
    } 
} 
+0

Link ist kaputt Ich denke – deostroll

+0

@deostroll: Behoben. –

2

Absolut. Es gibt ein paar Hacky-Methoden, aber die, die ich benutze, ist System.Core von der Mono project zu nehmen, den gesamten Code zu einer neuen .NET 2.0-Klassenbibliothek namens System.Core in meiner eigenen Lösung hinzufügen und neu kompilieren. Es gibt ein paar Dinge zu beheben, wie ihre MonoTODO-Attribute zu TODO-Kommentaren zu ändern und die AssemblyInfo.cs zu reparieren, aber es funktioniert großartig. Ich bin sowohl LINQ und Erweiterungsmethoden in einem 2.0-Projekt jetzt 2008

in VS kompilierte mit Vorausgesetzt, dass Sie die 2.4-Version der Mono Quelle zu erhalten, sollten Sie den Code finden Sie unter:

<extracted directory>/mono-2.4/mcs/class/System.Core 

Wenn Sie In VS 2005 stecken, können Sie herunterladen SharpDevelop, bauen Sie Ihre System.Core DLL mit dem Ziel 2.0, fügen Sie einen Verweis auf die kompilierte Assembly, und es kann funktionieren, aber ich weiß nicht, ob VS 2005 wird ein Problem haben mit der Erweiterung Syntax oder nicht. Ich stelle mir vor, dass es dir etwas Lippe geben wird.

+0

Der Schlüssel ist in VS 2008 kompiliert. Ich bin immer noch mit VS 2005 fest :( –

+0

Ich sah das VS2008-Tag und nahm 2008 an. Wenn Sie im Jahr 2005 sind, können Sie möglicherweise eine vorkompilierte Binärdatei finden oder verwenden SharpDevelop (Ich werde mit einem Link aktualisieren.) Wenn Sie in Win2K kompilieren, haben Sie leider kein Glück, da es das 3.5-Framework nicht unterstützt. –

Verwandte Themen