2015-11-22 3 views
3

Я хочу создать общий метод для моего запроса и ответа на обслуживание с помощью RestSharp. Я хочу передать ресурс url и Object Name любого класса и надеюсь получить ответ того же типа объекта, который я передал.Создание общего метода для принятия объекта типа и возврата нового объекта типа

Я не нахожу способ запустить этот код, и я знаю, что это не идеальный способ, но я буду рад, если кто-нибудь назовет меня исправить путь , например.

class Employee 
{ 
    Employee em = new Employee(); 
    RequestClass CreateRequest = new Request(); 
    public Employee GetAllEmployee() 
    { 
     return RequestClass.MyRequest("http://get-all-employee",em); 
    } 
} 

class RequestClass 
{ 
    public Type MyRequest(string resource, Type objectName) 
    { 
     var client = new RestClient("http://Service-url.com"); 
     var request = new RestRequest(resource, Method.GET); 
     var response = client.Execute(request); 
     var result = response.Content; 

     Type ClassName = objectName.GetType(); 
     Object myobject = Activator.CreateInstance(ClassName); 

     JsonDeserializer jsonDeserializer = new JsonDeserializer(); 
     myobject = jsonDeserializer.Deserialize<Type ClassName>(response); 

     return (Type)myobject; 
    } 
}  

ответ

5

Используйте generic type parameter с new() constraint:

public T MyRequest<T>(string resource) where T : new() 
{ 
    var client = new RestClient("http://Service-url.com"); 
    var request = new RestRequest(resource, Method.GET); 
    var response = client.Execute(request); 

    JsonDeserializer jsonDeserializer = new JsonDeserializer(); 
    return jsonDeserializer.Deserialize<T>(response); 
} 

И затем использовать его как это:

public Employee GetAllEmployee() 
{ 
    var requestClass = new RequestClass(); 
    return requestClass.MyRequest<Employee>("http://get-all-employee"); 
} 
Смежные вопросы