Я хотел бы создать класс, который принимает только типы с определенным методом T Parse(string source)
в качестве аргумента шаблона. Что я должен написать вместо многоточия?
public class Foo<T> where T: ... {}
Если я определю интерфейс с помощью метода Parse
, то только пользовательские типы, реализующие такой интерфейс, будут удовлетворять условию, верно? Но я также хочу, чтобы нативные типы были приняты, потому что у них есть такой метод.
Рассмотрим, например, концепцию C++20's
. Это булева функция, вычисляемая во время компиляции, если она оценивается как true
, компилятор принимает аргумент, в противном случае возникает ошибка.
Есть ли способ сделать это, желательно во время компиляции?