VB.NET Числовой тип только дженерики? - PullRequest
1 голос
/ 20 января 2011

VB.NET, .NET 4

Привет всем,

Предположим, у меня есть интерфейс под названием IParseable (из TParsed, TUnparsed), который требует две функции:

Function Parse(ByVal Value As TUnparsed) As TParsed
Function Unparse(ByVal Value As TParsed) As TUnparsed

Есть ли способ, которым я могу ограничить TParsed и TUnparsed числовыми типами (для которых уже определены такие операции, как "*" и "+")?

Проблема в том, что, когда я пытаюсь реализоватьМой интерфейс и определить одну из функций, например:

Public Function Parse(ByVal Value As TUnparsed) As TParsed Implements IParseable(Of TParsed, TUnparsed).Parse
   Return CType(10 * Value, TParsed)
End Function

VS выдает ошибку, говоря, что "*" не определен для TUnparsed.Я понимаю, что, поскольку TUnparsed может быть чем угодно, но есть ли способ ограничить мой универсальный такой, что, скажем, TUnparsed может быть только Double, Integer, Long и т. Д.?

Я спрашиваю это, потому что знаю, что выможет сделать что-то вроде:

Function Blah(Of T As TextBox)(ByVal Control As T) As Object

Требовать, чтобы Control был TextBox (или, может быть, я тоже не очень хорошо понимаю это ....).Но, в любом случае, есть идеи или я не в курсе?Просто пытаюсь освоить эти интерфейсные вещи и универсальные типы.

Заранее большое спасибо, Брайан

Ответы [ 2 ]

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

Я просто хотел упомянуть (на случай, если кому-то интересно что-то подобное), что, хотя SLaks прав насчет арифметики, я читал об опрятном способе ограничения универсальных типов сопоставимыми значениями:

(Of T As {Структура, IComparable})

1 голос
/ 20 января 2011

К сожалению, это невозможно.

Есть два обходных путей .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...