Общий метод минимального значения Nullable с расширением – как? [закрыто]C#

Место общения программистов C#
Anonymous
Общий метод минимального значения Nullable с расширением – как? [закрыто]

Сообщение Anonymous »

Моя цель — простая минимальная функция для общих структур, допускающих значение NULL. Метод расширения на основе прост и хорошо компилируется:

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

public static T Minimum(this T struct1, T struct2) where T : struct, IComparable
{
return struct1.CompareTo(struct2) < 0 ? struct1 : struct2;
}
Однако в универсальной версии, допускающей значение NULL, возникают проблемы с распознаванием этого метода расширения:

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

public static Nullable Mininum(this Nullable struct1, Nullable struct2) where T: struct, IComparable
{
if (!struct1.HasValue)
return struct2;
if (!struct2.HasValue)
return struct1;

// this line won't compile - the Minimum extension method is not visible
return struct1.Value.Minimum(struct2.Value);
}
При использовании общего минимума, не допускающего значения NULL, например. экземпляр DateTime, он просто работает. У кого-нибудь есть идеи, почему компилятор не делает общий минимум, не допускающий значения NULL, видимым в методе расширения общего минимума, допускающего значение NULL?
Редактировать: в совершенно новом исходном файле - теперь это отлично работает . Спасибо за ваш вклад.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ension-how

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