[英]Using Extension Methods with .NET Framework 2.0
在Visual Studio 2008下
我可以創建一個擴展方法在.NET Framework 2.0項目下工作嗎?
有一個丑陋的黑客讓擴展方法在.Net 2.0中工作; 但最好將框架升級到3.5。
簡而言之(來自鏈接#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.