Использование методов расширения в.NET 2.0?
Я хочу сделать это, но получаю эту ошибку:
Ошибка 1 Не удается определить новый метод расширения, поскольку требуемый компилятору тип "System.Runtime.CompilerServices.ExtensionAttribute" не найден. Вам не хватает ссылки на System.Core.dll? [отрезал некоторые пути пути]
Я видел здесь несколько ответов, в которых говорится, что вы должны определить этот атрибут самостоятельно.
Как я могу это сделать?
РЕДАКТИРОВАТЬ: Это то, что у меня есть:
[AttributeUsage ( AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method )]
public sealed class ExtensionAttribute : Attribute
{
public static int MeasureDisplayStringWidth ( this Graphics graphics, string text )
{
}
}
1 ответ
Решение
Вот так:
// you need this once (only), and it must be in this namespace
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class
| AttributeTargets.Method)]
public sealed class ExtensionAttribute : Attribute {}
}
// you can have as many of these as you like, in any namespaces
public static class MyExtensionMethods {
public static int MeasureDisplayStringWidth (
this Graphics graphics, string text )
{
/* ... */
}
}
В качестве альтернативы; просто добавьте ссылку на LINQBridge.