2009-04-23 22 views
6

Visual Studio 2008
.NET Framework 2.0 projesi kapsamında çalışmak için bir uzantı yöntemi oluşturabilir miyim?.NET Framework 2.0 ile Uzantı Yöntemlerini Kullanma

+0

Ayrıntılar için [blogum] bölümüne bakın (http://colins-corner.blogspot.com/2009/01/extension-methods-in-net-20.html). –

cevap

10

ugly hack var, Uzantı yöntemleri çalışıyor. Net 2.0; ancak çerçevenizi sadece 3.5'e yükseltmek daha iyi olur. Diğer Kaynaklar: 1, 2.

Özetle (bağlantı # 2'den): Uzantı yöntemleri, [Uzantı] özniteliği ile etiketlenen normal statik yöntemlerdir. Bu özellik aslında sadece arkasındaki derleyici tarafından eklenir. .NET 3.5, System.Core içinde yaşıyor, bu nedenle, yalnızca kendi öznitelik tanımlayın:

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

Link bozuk Sanırım – deostroll

+0

@deostroll: Sabit. –

2

Kesinlikle. Birkaç hacky metodu var ama kullanıyorum, System.Core'u Mono project'dan almak, kendi kodunu kendi çözümümdeki System.Core adlı yeni bir .NET 2.0 Sınıf Kütüphanesine eklemek ve yeniden derlemek. MonoTODO özniteliklerini TODO yorumlarına çevirme ve AssemblyInfo.cs'yi düzeltme gibi düzeltmek için birkaç şey var, ancak harika çalışıyor. Şimdi LINQ ve Mono kaynağının 2.4 sürümü almak varsayarsak VS 2008

derlenmiş bir 2,0 projesinde uzatma yöntemleri hem kullanıyorum, sen altında kodunu bulmak gerekir:

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

Eğer VS 2005'te sıkışmışsınız, SharpDevelop'u indirebilir, System.Core dll'inizi 2.0 ile hedeflediğinizle derleyin, derlenmiş derleme için bir referans ekleyin ve işe yarayabilir, ancak VS 2005'in bir sorunu olup olmadığını bilmiyorum uzantısı sözdizimi ile veya değil. Sana biraz dudak vereceğini hayal ediyorum.

+0

Anahtar, VS 2008'de derlenmiştir. Hala VS 2005 ile karşılaştım :( –

+0

VS2008 etiketini gördüm ve 2008'i kabul ediyorum. Eğer 2005’te iseniz, önceden derlenmiş bir ikili bulabilir veya SharpDevelop (Bir bağlantı ile güncelleyeceğim) Eğer Win2K'da bir derleme yapıyorsanız, 3.5 çerçeveyi desteklemeyeceğinden maalesef şanssızsınız. –