请用字典优化此代码吗?否则。
if (node.Type.Equals(NodeType.CONTAINER))
{
DataUtils.ContainerToData((INode<ContainerValue>) node, data);
}
else if (node.Type.Equals(NodeType.TEXT))
{
DataUtils.TextToData((INode<TextValue>) node, data);
}
我有15个这样的条件。
我以为字典可以用,但是如何转换? (INode<pair.Value>) node
。我正在寻找这样的解决方案:
var dictionary = new Dictionary<string, Type>();
dictionary.Add(NodeType.CONTAINER, tyeof(ContainerValue));
dictionary.Add(NodeType.TEXT, tyeof(TextValue));
foreach (var pair in dictionary)
{
if(node.Type.Equals(pair.Key))
{
// wrong
DataUtils.ContainerToData((INode<pair.Value>) node, data);
}
}
答案 0 :(得分:0)
我认为您可以使用转换选项:
switch (node)
{
case INode<ContainerValue> containerValue:
DataUtils.ContainerToData(containerValue, data);
break;
case INode<TextValue> textValue:
DataUtils.ContainerToData(textValue, data);
break;
}
希望获得帮助。