如何在此场景中初始化局部变量? 有没有更好的方法来写这个?
它没有通用的基本类型
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);
答案 0 :(得分:2)
取决于.MapFrom()
返回的类型。它们有共同的基本类型吗?
如果这样做,您可以使用:
CommonBaseType result = null;
在您的情况下,它似乎是NavigatorTopicTemplateXmlDTO
,所以它将是:
NavigatorTopicTemplateXmlDTO result = null;
如果没有,则可以使用:
object result = null;
答案 1 :(得分:0)
在任何情况下,都可以将公共基数设置为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);