У меня есть один модуль для консольного приложения с методом расширения в отдельном Extensions
пространства имен и классе, упомянутых в DataProcessor
классе с using Extensions;
, эффективно следующимом посторонним кодом удален:метода Extension не найден
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataProcessor
{
using Extensions;
class Program
{
public static int Main(string[] Args)
{
for (int CtrA = 0; CtrA <= 100; CtrA++)
{
System.Diagnostics.Debug.Print((CtrA + 1).Ordinal); // Error occurs here
}
}
}
}
namespace Extensions
{
public static class Extensions
{
public static string Ordinal(int Number)
{
string Str = Number.ToString();
Number = Number % 100;
if ((Number >= 11) && (Number <= 13))
{
Str += "th";
}
else
{
switch (Number % 10)
{
case 1:
Str += "st";
break;
case 2:
Str += "nd";
break;
case 3:
Str += "rd";
break;
default:
Str += "th";
break;
}
}
return Str;
}
}
Я получаю ошибку компиляции на линии System.Diagnostics.Debug.Print((CtrA + 1).Ordinal);
, а также везде я использую .Ordinal
как int
метод, заявив:
«INT» не содержит определение для «Порядковый» и без расширения встретились hod 'Ordinal', принимающий первый аргумент типа 'int', может быть найден (вам не хватает директивы использования или ссылки на сборку?)
Может ли кто-нибудь сказать мне, что я делаю неправильно?
Вы забыли поставить ключевое слово 'this' в' Ordinal' signiture. –
Вероятно, должен быть дубликат [Поддерживает свойства расширения C#] (http://stackoverflow.com/questions/619033/does-c-sharp-have-extension-properties) ... Пока не закрывается, так как неясно, будет ли OP не знает синтаксиса расширений (должен быть еще один дубликат) или на самом деле нужен свойство расширения. –