Использование методов расширения с.NET Framework 2.0
Под Visual Studio 2008
Могу ли я создать метод расширения для работы в проекте.NET Framework 2.0?
2 ответа
Есть отвратительный способ взломать методы расширения, работающие в.Net 2.0; но было бы лучше просто обновить ваш фреймворк до 3.5.
Альтернативные источники: 1, 2.
Вкратце (из ссылки № 2): Методы расширения - это просто обычные статические методы, помеченные атрибутом [Extension]. Этот атрибут фактически добавляется компилятором за кулисами. В.NET 3.5 он находится в System.Core, поэтому просто определите свой собственный атрибут следующим образом:
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class ExtensionAttribute : Attribute
{
}
}
Абсолютно. Есть несколько хакерских методов, но один из них, который я использую, - взять System.Core из проекта Mono, добавить весь его код в новую библиотеку классов.NET 2.0 с именем System.Core в моем собственном решении и перекомпилировать его., Есть несколько вещей, которые нужно исправить, например, изменить их атрибуты MonoTODO на комментарии TODO и исправить AssemblyInfo.cs, но это прекрасно работает. Сейчас я использую методы LINQ и расширения в проекте 2.0, скомпилированном в VS 2008.
Предполагая, что вы получите версию Mono версии 2.4, вы должны найти код в:
<extracted directory>/mono-2.4/mcs/class/System.Core
Если вы застряли в VS 2005, вы можете скачать SharpDevelop, собрать dll System.Core, ориентированный на 2.0, добавить ссылку на скомпилированную сборку, и она может работать, но я не знаю, будет ли VS 2005 иметь проблема с расширением синтаксиса или нет. Я полагаю, это даст вам немного губ.