【问题标题】:Declaring local variable of unknown type声明未知类型的局部变量
【发布时间】:2019-03-15 11:44:10
【问题描述】:

如何在这个场景中初始化我的局部变量? 有没有更好的方法来写这个?

它没有共同的基类型

var result = 

switch (template)
{
    case TopicXmlSerializationTemplate.Bloomberg:
        result = NavigatorTopicTemplateBloombergXmlDTO.MapFrom(topic, topicArticles);
        break;

    default:
        result = NavigatorTopicTemplateXmlDTO.MapFrom(topic, topicArticles);
        break;
}

var data = await xmlSerializationService.SerialiseXML(result, Encoding.UTF8);

public static NavigatorTopicTemplateXmlDTO MapFrom(NavigatorTopic topic, IEnumerable<NavigatorTopicArticle> articles)
{
    return new NavigatorTopicTemplateXmlDTO()
    {
        Name = topic.Title,
        ISSN = topic.ISSN,
        Editors = topic.ConsultingEditors.Select(e => EditorsDTO.MapFrom(e.AuthorName)).ToArray(),
        Articles = articles.Select(a => TopicArticlesDTO.MapFrom(a)).ToArray(),
        Jurisdictions = topic.Jurisdictions.Select(j => TopicJurisdictionsBloombergDTO.MapFrom(j, topic)).ToArray(),
    };
}

Task<string> SerialiseXML(T entity, Encoding encoding);

【问题讨论】:

    标签: c# variables generics local


    【解决方案1】:

    取决于.MapFrom() 返回的类型。它们有共同的基本类型吗?

    如果他们这样做,您可以使用:

    CommonBaseType result = null;
    

    在你的情况下,它似乎是NavigatorTopicTemplateXmlDTO,所以它会是:

    NavigatorTopicTemplateXmlDTO result = null;
    

    如果他们不这样做,您可以使用:

    object result = null;
    

    【讨论】:

    • 不需要= null,因为它肯定是由switch语句分配的。
    • 我已经更新了 MapFrrom 不,它没有通用的基本类型
    • 确实如此,NavigatorTopicTemplateXmlDTO 在这两种情况下都会返回?如果是这样,则使用该类型声明变量:NavigatorTopicTemplateXmlDTO result;.
    • @KarimAli,MapFrom 类的MapFrom 方法的返回类型是什么?
    【解决方案2】:

    在任何情况下,公共基础都可以设置为SerialiseXML签名的第一个参数的类型,可以是object。说它是object,就这样做:

    object result;
    
    switch (template)
    {
      case TopicXmlSerializationTemplate.Bloomberg:
        result = NavigatorTopicTemplateBloombergXmlDTO.MapFrom(topic, topicArticles);
        break;
    
      default:
        result = NavigatorTopicTemplateXmlDTO.MapFrom(topic, topicArticles);
        break;
    }
    
    var data = await xmlSerializationService.SerialiseXML(result, Encoding.UTF8);
    

    【讨论】:

    • 无法将对象转换为模型我已经更新了我的代码
    猜你喜欢
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 2014-02-12
    相关资源
    最近更新 更多