创建接受类型对象的通用方法并返回一个新的类型对象

Muh*_*aid 3 .net c# generics

我想使用RestSharp为我的服务请求和响应创建一个通用方法.我想传递任何类的资源URL和对象名称,并希望获得我传递的相同对象类型的响应.

我没有找到运行此代码的方法,我知道它不是完美的方式,但如果有人指示我纠正路径,我会很高兴,例如

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;
    }
}       
Run Code Online (Sandbox Code Playgroud)

Yuv*_*kov 5

使用带约束泛型类型参数:new()

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);
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

public Employee GetAllEmployee()
{
    var requestClass = new RequestClass();
    return requestClass.MyRequest<Employee>("http://get-all-employee");
}
Run Code Online (Sandbox Code Playgroud)