将嵌套数组 class 转换为另一个嵌套数组 class c#
Convert nested array class to another nested array class c#
我有 2 个 classes,它们看起来完全一样,但位于不同的命名空间中。嵌套的 class 中的一个 属性 本身就是一个数组,它允许 属性 nesting/recursion (有点像命令模式)
我正在尝试 convert/cast 从一个命名空间中的 class 到另一个命名空间中的 class。我有以下代码:
namespace Common.Class
{
public class Root
{
public string Key { get; set; }
public Child[] Children { get; set; }
public class Child
{
public string Content { get; set; }
public Child[] RecursionChild { get; set; }
}
}
}
namespace Uncommon.Class
{
class Root
{
public string Key { get; set; }
public Child[] Children { get; set; }
public class Child
{
public string Content { get; set; }
public Child RecursionChild { get; set; }
}
}
}
主程序
static void Main(string[] args)
{
var commonRoot = new Common.Class.Root
{
Key = "1234-lkij-125l-123o-123s",
Children = new Common.Class.Root.Child[]
{
new Common.Class.Root.Child
{
Content = "Level 1 content",
RecursionChild = new Common.Class.Root.Child[] { }
}
}
};
var uncommonRoot = new Uncommon.Class.Root
{
Key = commonRoot.Key,
Children = commonRoot.Children // here I get error: Cannot implicitly convert type 'Common.Class.Root.Child[]' to 'Uncommon.Class.Root.Child[]'
};
}
你也需要转换children。
因为你有那个递归 child,你不能只用匿名函数来实现它,因为函数必须能够调用自己,你需要一个名字。所以我们需要引入一个具有真实名称的局部函数,例如Converter
.
Uncommon.Root.Child Converter(Common.Root.Child source) => new Uncommon.Root.Child
{
Content = source.Content,
RecursiveChild = Converter(source.ResursiveChild)
};
var uncommonRoot = new Uncommon.Class.Root
{
Key = commonRoot.Key,
Children = commonRoot.Children.Select(Converter).ToArray();
};
我有 2 个 classes,它们看起来完全一样,但位于不同的命名空间中。嵌套的 class 中的一个 属性 本身就是一个数组,它允许 属性 nesting/recursion (有点像命令模式)
我正在尝试 convert/cast 从一个命名空间中的 class 到另一个命名空间中的 class。我有以下代码:
namespace Common.Class
{
public class Root
{
public string Key { get; set; }
public Child[] Children { get; set; }
public class Child
{
public string Content { get; set; }
public Child[] RecursionChild { get; set; }
}
}
}
namespace Uncommon.Class
{
class Root
{
public string Key { get; set; }
public Child[] Children { get; set; }
public class Child
{
public string Content { get; set; }
public Child RecursionChild { get; set; }
}
}
}
主程序
static void Main(string[] args)
{
var commonRoot = new Common.Class.Root
{
Key = "1234-lkij-125l-123o-123s",
Children = new Common.Class.Root.Child[]
{
new Common.Class.Root.Child
{
Content = "Level 1 content",
RecursionChild = new Common.Class.Root.Child[] { }
}
}
};
var uncommonRoot = new Uncommon.Class.Root
{
Key = commonRoot.Key,
Children = commonRoot.Children // here I get error: Cannot implicitly convert type 'Common.Class.Root.Child[]' to 'Uncommon.Class.Root.Child[]'
};
}
你也需要转换children。
因为你有那个递归 child,你不能只用匿名函数来实现它,因为函数必须能够调用自己,你需要一个名字。所以我们需要引入一个具有真实名称的局部函数,例如Converter
.
Uncommon.Root.Child Converter(Common.Root.Child source) => new Uncommon.Root.Child
{
Content = source.Content,
RecursiveChild = Converter(source.ResursiveChild)
};
var uncommonRoot = new Uncommon.Class.Root
{
Key = commonRoot.Key,
Children = commonRoot.Children.Select(Converter).ToArray();
};