【问题标题】:C# Generics Extension Method IssuesC# 泛型扩展方法问题
【发布时间】:2020-02-17 21:07:49
【问题描述】:

所以我对编写通用转换模型扩展还很陌生,我试图从一个模型转到一个按预期工作的天蓝色服务总线消息。但我现在正试图做相反的事情,它可以从消息转到指定类型。

扩展方法目前看起来是这样的。

    public static class ModelExtensions
    {
        public static Message ToMessage<TModel>(this TModel model) =>
            new Message(
                Encoding.UTF8.GetBytes(
                    JsonConvert.SerializeObject(model)));

        public static TType FromMessage<TModel, TType>(this TModel model)
        {
            return JsonConvert.DeserializeObject<TType>(JsonConvert.SerializeObject(model));
        }
    }

有没有办法与我刚刚对许多类型所做的相反,这取决于扩展方法的另一侧指定的内容,例如,如果在外部我做了类似的事情。

message.FromMessage()

任何帮助将不胜感激, 提前致谢, 克里斯。

【问题讨论】:

  • ToMessage() 不需要是通用的,因为您没有在方法主体内的任何地方使用TModel。你可以接受object

标签: c# asp.net .net generics model


【解决方案1】:

应该很简单

public static TModel FromMessage<TModel>(this Message message)
  => JsonConvert.DeserializeObject<TModel>(Encoding.UTF8.GetString(message.Body));

用法

var result = message.FromMessage<MyLovelyHorse>()

【讨论】:

  • 在您发布之前,我非常接近这一点,但它看起来应该非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 2014-12-21
相关资源
最近更新 更多