C# 如何将类转换为泛型类型
我有一个方法调用api服务来获得一些结果,方法的返回类型是类类型。对于单个类,我可以指定name作为其返回类型和工作状态。但在某些情况下,返回类型会发生更改。在那个场景中,我陷入了继续代码的困境。请指导我如何实现这一目标 预期解决方案: 我希望在GetDoc中添加if条件。。详细信息类中的方法。根据docType,我需要将GetRequestRecords更改为GetRequestEmployeeC# 如何将类转换为泛型类型,c#,templates,generics,asp.net-web-api,types,C#,Templates,Generics,Asp.net Web Api,Types,我有一个方法调用api服务来获得一些结果,方法的返回类型是类类型。对于单个类,我可以指定name作为其返回类型和工作状态。但在某些情况下,返回类型会发生更改。在那个场景中,我陷入了继续代码的困境。请指导我如何实现这一目标 预期解决方案: 我希望在GetDoc中添加if条件。。详细信息类中的方法。根据docType,我需要将GetRequestRecords更改为GetRequestEmployee public Class Details{ public async Task<IActio
public Class Details{
public async Task<IActionResult> GetDoc(string docType){
var result= await _apiService.GetRequest<Records>( //in some cases i need to change 'Records' to 'Employee'
url,//api url
...
)
}
}
----------
public class Record{
public Record(int id, string name){
ID=id;
Name=name
}
public int ID{get; set;}
public string Name{get;set;
}
public class Employee{
public Record(int id, string name){
ID=id;
Name=name
}
public int ID{get; set;}
public string Name{get;set;
}
public class ApiService{
public async Task<IactionResult> GetRequest<T>(string url, ....){
// here i am deserializing the response content using jsonconvert.
}
}
我建议为每个实体创建不同的端点,而不是像您正在接近的那样,因为这看起来是一个端点,可以获取不同实体的详细信息。比如说:
public class RecordController
{
public async Task<IActionResult> GetDetails(int id)
{
var result = await _apiService.GetRequest<Record>(id);
// Rest of the processing...
}
}
然后,员工的另一个控制器:
public class EmployeeController
{
public async Task<IActionResult> GetDetails(int id)
{
var result = await _apiService.GetRequest<Employee>(id);
// Rest of the processing...
}
}
如果其余逻辑允许,您可以进一步创建一个通用控制器,如:
public abstract class MyBaseController<T>
{
public virtual async Task<IActionResult> GetDetails(int id)
{
var result = await _apiService.GetRequest<T>(id);
// Rest of the processing...
// If the processing is not generic you may be able to use a delegate to handle that bit.
}
}
现在,在各个控制器中,您可以继承如下内容:
public class RecordController : MyBaseController<Record>
{
}
及
实际上没有测试这个。刚刚草拟了代码,为您提供了设计类的思路。您可以使用if…else基于docType值…如何使用公共异步任务GetDocstring docType和_apiService.GetRequest…例如,仅我提供了、Record和Employee。。但它可以是5个不同的类。@JeroenvanLangen我正在从类型脚本调用瘦细节类。有可能有GetDoc吗?。我还没试过这样做。我要试试这个。Thanks@shobia我相信转换声明是实现这一目标的方法。谢谢你的建议。
public class EmployeeController : MyBaseController<Employee>
{
}