簡體   English   中英

在.NET Framework 2.0中使用擴展方法

[英]Using Extension Methods with .NET Framework 2.0

在Visual Studio 2008下
我可以創建一個擴展方法在.NET Framework 2.0項目下工作嗎?

有一個丑陋的黑客讓擴展方法在.Net 2.0中工作; 但最好將框架升級到3.5。

替代能源: 12

簡而言之(來自鏈接#2):擴展方法只是用[Extension]屬性標記的普通靜態方法。 這個屬性實際上只是由幕后的編譯器添加的。 在.NET 3.5中,它存在於System.Core中,因此只需定義您自己的屬性,如下所示:

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

絕對。 有一些hacky方法,但我正在使用的是從Mono項目中獲取System.Core,將其所有代碼添加到我自己的解決方案中名為System.Core的新.NET 2.0類庫中,並重新編譯它。 有一些事情需要解決,例如將他們的MonoTODO屬性更改為TODO注釋,以及修復AssemblyInfo.cs,但它工作得很好。 我現在在VS 2008中編譯的2.0項目中使用LINQ和擴展方法。

假設您獲得了Mono源的2.4版本,您應該找到以下代碼:

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

如果您遇到VS 2005,可以下載SharpDevelop ,使用針對2.0的目標構建您的System.Core dll,添加對已編譯程序集的引用,它可能有效,但我不知道VS 2005是否會有是否存在擴展語法問題。 我想它會給你一些嘴唇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM