微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何根据构造函数中传递的字符串类名对对象进行类型转换 - C#

如何解决如何根据构造函数中传递的字符串类名对对象进行类型转换 - C#

这是我的自定义属性

 public class CaptureMetrics : ActionFilterattribute
 {
    private readonly string _metricType;
    public CaptureMetrics(MetricTypes metricType)
    {
        _metricType = metricType.ToString();
    }
    public override async Task OnActionExecutionAsync(ActionExecutingContext context,ActionExecutionDelegate next)
    {
        try
        {
            string strjson;
            var reqPayload = context.HttpContext.Request.Body;
            using (var sr = new StreamReader(reqPayload))
            {
                strjson = await sr.ReadToEndAsync();
            }
            //Type t = Type.GetType(_metricType);
            //below I need to typecast the object to the equivalent DTO 
            var obj = JsonConvert.DeserializeObject(strjson); //line #
            // Todo
        }
        catch (Exception)
        {
            //Todo -> Log Exception
            throw;
        }
        finally
        {
            await next();
        }
    }
}

public enum MetricTypes
{
    ApiMetric
}

//DTO
public class ApiMetric
{
  //some properties
}

从控制器的动作来看,上面的属性如下使用

[CaptureMetrics(MetricTypes.ApiMetric)]
public async Task<IActionResult> Get([FromBody]ApiPayload payload)
{
}

在第 # 行,我需要将请求负载类型转换为等效的 DTO 类。

对于 Enum (MetricType) 中的每个条目,我都有一个同名的类(例如 ApiMetric)

如何在此处对对象进行类型转换?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。