2015-11-20 3 views
0

Извините, если заголовок неясен. У меня загружена библиотека (RestSharp), и я пытаюсь обернуть функцию вокруг вызова API. Это выглядит примерно так:Метод принимает тип - Как заставить его принять общий?

RestResponse<object> restResponse = RestClient.Execute<object>(restRequest); 

Это работает. Теперь я пытаюсь заключить это в функцию.

static RestResponse<T> ApiCall<T>(object param1, object param2, ...) 

RestResponse<T> restResponse = RestClient.Execute<T>(restRequest); 

return restResponse; 

Приведенные выше урожайности «Т должен быть не абстрактный тип с открытым конструктором, чтобы использовать его в качестве параметра бла бла бла»

Является ли это ограничение метода RestClient.Execute?

+1

Да. Чтобы исправить это, вы можете сжать T –

+0

Не могли бы вы прояснить? – Suburbanpsyco6

+1

T должен быть любым общим аргументом типа 'RestClient.Execute ' может принимать. Поэтому, если он не может принять его, ваша функция не будет работать. Проверьте [this] (https://msdn.microsoft.com/en-us/library/d5x73970.aspx) для получения дополнительной информации. –

ответ

0

Оказывается, это можно сделать:

static RestResponse<T> ApiCall<T>(object param1, object param2, ...) where T: new() 

RestResponse<T> response = (RestResponse<T>)client.Execute<T>(request); 

return restResponse; 

Я понимаю, это может быть использовано только в случае, если объект имеет конструктор без параметров. Пожалуйста, не стесняйтесь звонить с более элегантными ответами!

Смежные вопросы