Ограничение, которое заставляет универсальный параметр быть разбираемым из строки - PullRequest
3 голосов
/ 30 января 2011

В этой теме можно найти решение для создания универсального класса, который обеспечивает разбор строк до универсального типа параметра. Однако может случиться, что тип, данный этому параметру, не обеспечивает такое преобразование. Есть ли способ сделать ограничение, гарантирующее это?

UPDATE: Спасибо за ответ. Тем не менее, я знаю, что могу вообще делать ограничения. Проблема в том, существует ли какой-либо интерфейс, который реализуется всеми типами, в которых Convert.ChangeType не будет работать. Или, который реализуется всеми типами с помощью метода Parse (string).

Ответы [ 2 ]

3 голосов
/ 30 января 2011

Поскольку, как я сказал в своем комментарии, вы не можете добавлять интерфейсы к определенным типам и не можете использовать типизацию утили в ограничениях универсального типа, вам, вероятно, придется в итоге написать какое-то хакерское решение. Я думаю, что вам лучше всего сделать несколько перегрузок вашей функции синтаксического анализа, по одному для каждого из базовых типов (int, char, string и т. Д.), А затем предоставить универсальный тип, в котором IConvertible используется в качестве общего ограничения. Компилятор выберет правильную перегрузку или ее вообще нет в случае неконвертируемых типов.

2 голосов
/ 30 января 2011

Вам необходимо использовать Тип ограничений , чтобы ограничить типы объектов, которые можно использовать в универсальном классе.Вы должны определить интерфейс, который можно использовать для этого преобразования, а затем установить этот интерфейс в качестве ограничения.

...