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



@getfield

Можно ли создать метод, в котором возвращаемый тип будет определятся в самом методе или строгая типизация дотнета не позволит сделать такое?
Возвращаемый тип будет зависеть от того, что придёт в ответе от АПИ (несколько вариантов типов, которые будут явно указаны в самом методе).


Решения вопроса 0


Ответы на вопрос 6



@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");
	}
}



@vabka Куратор тега C#

Возвращаемый тип будет зависеть от того, что придёт в ответе от АПИ (несколько вариантов типов, которые будут явно указаны в самом методе).

Просто сделай класс, в котором будет какой-нибудь флаг, который сообщает о типе контента и N свойств для каждого типа.
Если у тебя только два типа — результат и ошибка, то используй Either
https://habr.com/ru/post/267231/



@sergeyiljin

Есть же обобщения — <T>.



@freeExec

Возвращаешь самый базовый тип object, но это говнокод. АПИ обычно возвращает заранее известную структуру данных.



@Griboks Куратор тега C#

Нет, С# не поддерживает объединение типов. Можете обобщить, использовать шаблон или контейнер, наследовать, использовать интерфейс. Но самым правильным решением будет переписать api метод так, чтобы он возвращал заранее известный тип (в этом и есть смысл api).



@HemulGM

Тебе нужны дженерики «<T>»

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *