Есть ли способ написать метод расширения, применимый к нескольким типам?C#

Место общения программистов C#
Ответить
Anonymous
 Есть ли способ написать метод расширения, применимый к нескольким типам?

Сообщение Anonymous »

Я пытаюсь написать метод расширения, который добавит функцию HasFactor в класс int в C#. Это прекрасно работает, вот так:

Код: Выделить всё

static class ExtendInt
{
public static bool HasFactor(this int source, int factor)
{
return (source % factor == 0);
}
}

class Program
{
static void Main()
{
int i = 50;
int f = 2;
bool b = i.HasFactor(f);
Console.WriteLine("Is {0} a factor of {1}? {2}",f,i,b);
Console.ReadLine();
}
}
Это прекрасно работает, поскольку переменная i в методе Main() выше объявлена ​​как int. Однако если i объявлен как Int16 или Int64, метод расширения не отображается, если он явно не приведен как int или Int32. .

Теперь я хотел бы применить один и тот же метод HasFactor к Int16 и Int64. Однако я бы предпочел не писать отдельные методы расширения для каждого типа int. Я мог бы написать один метод для Int64, а затем явно привести все к Int64 или long, чтобы появился метод расширения.

В идеале я бы предпочел, чтобы один и тот же метод расширения применялся ко всем трем типам без необходимости копировать и вставлять много кода.

Возможно ли это вообще в C#? Если нет, существует ли рекомендуемая передовая практика для подобных ситуаций?

Подробнее здесь: https://stackoverflow.com/questions/199 ... iple-types
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»