Кажется, я не могу найти какую-либо ссылку, подтверждающую, что это все еще необходимо при использовании C # 4.0 в проекте .Net 2.0.
Да, это так.Компилятору нужен этот атрибут.Определите ли вы это сами или используете тот, который указан в System.Core
, зависит от вас.Хотя в вашем конкретном случае System.Core
не вариант, так как это только часть .NET 3.5.
После обновления до более поздней версии 3.5 или более поздней вы можете безопасно удалить этот атрибут из вашего проекта.все вместе и просто используйте один в System.Core
.
Если вы обновились до Visual Studio 2010;тогда вы используете компилятор C # 4.0.Это означает, что все, что вам нужно, это ExtensionAttribute
:
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class ExtensionAttribute : Attribute
{
}
}
Это должно находиться в этом точном пространстве имен.
Как только вы это где-то получите, вы можетеобъявите метод расширения обычным способом (поскольку вы используете компилятор C # 4.0):
public static class Extensions
{
public static string ToTitleCase(this string str)
{
//omitted
}
}
, а затем используйте его как метод расширения:
var str = "hello world";
str.ToTitleCase();
Вы сами этого не делаетена самом деле когда-либо нужно поставить ExtensionAttribute
на что-либо;компилятор C # 4.0 сделает это за вас.По сути, все, что нужно компилятору, - это найти атрибут с именем ExtensionAttribute
.