@getfield

C#. Можно ли создать метод, в котором возвращаемый тип будет определятся в самом методе?

Можно ли создать метод, в котором возвращаемый тип будет определятся в самом методе или строгая типизация дотнета не позволит сделать такое?
Возвращаемый тип будет зависеть от того, что придёт в ответе от АПИ (несколько вариантов типов, которые будут явно указаны в самом методе).
  • Вопрос задан
  • 292 просмотра
Пригласить эксперта
Ответы на вопрос 5
profesor08
@profesor08
https://docs.microsoft.com/en-us/dotnet/csharp/pro...
https://docs.microsoft.com/en-us/dotnet/csharp/fun...

class User {
	public string id;
	public string name;
}

public class Program
{
	public static T Request<T>(string url) where T : new() {
		return new T();
	}
	
	public static void Main()
	{
		var user = Request<User>("https://127.0.0.1");
	}
}
Ответ написан
Комментировать
Возвращаемый тип будет зависеть от того, что придёт в ответе от АПИ (несколько вариантов типов, которые будут явно указаны в самом методе).

Просто сделай класс, в котором будет какой-нибудь флаг, который сообщает о типе контента и N свойств для каждого типа.
Если у тебя только два типа - результат и ошибка, то используй Either
https://habr.com/ru/post/267231/
Ответ написан
Комментировать
freeExec
@freeExec
Участник OpenStreetMap
Возвращаешь самый базовый тип object, но это говнокод. АПИ обычно возвращает заранее известную структуру данных.
Ответ написан
Комментировать
Griboks
@Griboks Куратор тега C#
Нет, С# не поддерживает объединение типов. Можете обобщить, использовать шаблон или контейнер, наследовать, использовать интерфейс. Но самым правильным решением будет переписать api метод так, чтобы он возвращал заранее известный тип (в этом и есть смысл api).
Ответ написан
HemulGM
@HemulGM
Delphi Developer, сис. админ
Тебе нужны дженерики "<T>"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы