gpt4 book ai didi

c# - 将树结构转换/转换为不同类型

转载 作者:太空狗 更新时间:2023-10-30 00:43:10 27 4
gpt4 key购买 nike

如果我有课:

class NodeA
{
public string Name{get;set;}
public List<NodeA> Children {get;set;}
// etc some other properties
}

和其他一些类:

class NodeB
{
public string Name;
public IEnumerable<NodeB> Children;
// etc some other fields;
}

如果我需要将 NodeB 对象转换为 NodeA 类型,最好的方法是什么?创建一个包装类?如果我必须创建一个包装器类,我该如何创建它以便所有 wpf 控件仍然能够成功绑定(bind)到属性?

  • 我需要创建这样的类型转换的原因:

    程序中使用了一种旧算法,该算法返回已编译程序中的符号列表 (IMemorySymbol)。我们已经工作并创建了一个新算法,字段和属性有些不同 (ISymbolElem)。我们需要执行临时转换,以便在 wpf 应用程序的 View 中显示属性。

最佳答案

几个方法...

复制构造函数

有一个 NodeA 和 NodeB 包含一个相反的构造函数:

class NodeA 
{
public string Name{get;set;}
public List<NodeA> Children {get;set;}

// COPY CTOR
public NodeA(NodeB copy)
{
this.Name = copy.Name;
this.Children = new List<NodeA>(copy.Children.Select(b => new NodeA(b));
//copy other props
}
}

显式或隐式运算符

显式你可以像 NodeA a = (NodeA)b; 那样转换,而隐式你可以跳过括号。

public static explicit operator NodeA(NodeB b)
{
//if copy ctor is defined you can call one from the other, else
NodeA a = new NodeA();
a.Name = b.Name;
a.Children = new List<NodeA>();

foreach (NodeB child in b.Children)
{
a.Children.Add((NodeA)child);
}
}

关于c# - 将树结构转换/转换为不同类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12062499/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com