Контракт на ограничение аргумента универсального типаC#

Место общения программистов C#
Ответить
Anonymous
 Контракт на ограничение аргумента универсального типа

Сообщение Anonymous »

Я стараюсь использовать дженерики как можно чаще, и ограничения, конечно, очень помогают. Но иногда ограничения вынуждают меня вызывать универсальный метод из универсального метода с использованием отражения, потому что ограничения не совпадают. Пример:
void Method1(T value)
{
if(value.GetType().IsValueType)
{
Method2(value);// Won't work without reflection
}
}

void Method2(T value) where T : struct
{
...
}

Я могу использовать контракты для таких вещей, как предположение, что значение не равно нулю – но есть ли что-нибудь подобное для общих ограничений? Нравится:
Contract.Assert(T is struct);


Подробнее здесь: https://stackoverflow.com/questions/792 ... constraint
Ответить

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

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

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

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

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