从通用C#对象递归删除密钥

问题描述

我正在尝试可视化一个SyntaxTree的C#对象。 JSON会很好,但不是必需的,我只是很难处理VS UI和对象中的所有循环引用。当我尝试使用JSON.NET对其进行序列化时,出现循环引用错误。这不是我第一次遇到类似的问题,但我想我会解决一下。

我知道哪些键需要删除,它们是ContainingElement,ContainingNamSpace,ContainingSourceUnit,ContainingType。

我试图创建一个可以重用的函数,以便在将其传递给JSON.NET之前以递归方式从对象中删除这些键,但是我需要一些帮助。

public static object removeObjectsByName(object incoming,string WildcardRemove){
        List<object newObject = new List<object>();
        foreach (var item in incoming)
        {
            if (subItem.ToString().Contains(WildcardRemove))
            {
                continue;
            }
        }

        removeObject(newObject);
        return newObject;
}

我通常不会对泛型类型做很多事情,但是我不知道所有传入数据类型将是什么,尤其是当我们递归地调用它时。我们应该创建ListArray还是将其保留为object?这是我正在查看的示例:

enter image description here

对象的根名为tree,我对Functions感兴趣,该数组中有61个项目。在深入研究这些内容时,您会发现需要删除Containing*键。麻烦的是它们也将存在于BodyProperties下。然后在Body下,还有一个Properties。{p}

我不需要任何向后引用的东西,我只希望每个孩子都没有名为Containing*的任何键。

有什么提示吗?再说一次,我不在乎输出是JSON,还是以列表的形式输出到控制台,是否使用Linq或其他东西,只是试图通过这种方式查看自己的方式。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)