Я ищу лучший способ реализовать метод, который ведет себя по-разному в соответствии с аргументом типа (я не могу использовать динамический здесь).Метод, который ведет себя по-разному с помощью некоторых аргументов типа
public class Methods { public int someMethod1() { return 1; } public string someMethod2() { return "2"; } public ??? process(System.Type arg1) ??? { if (arg1 is of type int) ?? return someMethod1(); else if (arg1 is of type string) ?? return someMethod2(); } }
Если мой пример не ясно, вот моя реальная потребность:
- Пользователь моей Lib может указать, какой тип возвращения он хочет от его просьбы,
- В зависимости от типа спросил, я должен использовать другой набор методов (например, GetValueAsInt32()
или GetValueAsString()
)
Большое спасибо!
Это не может работать как в теле метода я не могу возвращать тип arg1 к Т – roboch
я могу решить мою проблему с набором, если/иначе, если заявление но если я это сделаю, я не буду обобщать это решение на всю библиотеку и поэтому получит много повторяющихся последовательностей (чего я не хочу). – roboch
Вы правы. В случае поддержки дженериков здесь вам нужно будет добавить ограничение на то, что T является классом, чтобы привести результат к T. другой вариант - вернуть объект и сделать несколько общедоступных методов, которые будут поддерживать возвращаемые базовые типы, такие как int, string, decimal и т. Д. , –