C# 与用户界面无关的传递基于树的信息的方式

C# 与用户界面无关的传递基于树的信息的方式,c#,wpf,winforms,treeview,C#,Wpf,Winforms,Treeview,我正在编写一些与Winforms应用程序相关的支持代码,但是我不想让代码依赖Winforms代码,这样我就可以轻松地将代码移动到其他地方,例如WPF 我遇到的问题是我返回一些基于树的信息的操作之一,在这种特定情况下,它将从带有子文件夹的目录.EnumerateFiles()中筛选一组结果 我知道对于我目前的情况,我可以将字符串路径传递到UI层,让UI构建它,但是如果我没有已经可用的格式,那么正确的处理方法是什么?我是否应该创建自己的自定义树样式类以传递到UI层,或者.NET framework中

我正在编写一些与Winforms应用程序相关的支持代码,但是我不想让代码依赖Winforms代码,这样我就可以轻松地将代码移动到其他地方,例如WPF

我遇到的问题是我返回一些基于树的信息的操作之一,在这种特定情况下,它将从带有子文件夹的
目录.EnumerateFiles()
中筛选一组结果


我知道对于我目前的情况,我可以将字符串路径传递到UI层,让UI构建它,但是如果我没有已经可用的格式,那么正确的处理方法是什么?我是否应该创建自己的自定义树样式类以传递到UI层,或者.NET framework中是否已经存在某种提供基于树的信息的通用表示的内容,而不是绑定到
System.Windows.
命名空间中的内容?

否,框架中没有任何预先存在的内容。我通常会这样做:

public class Node<T>
{
    public T Value { get; set; }
    public List<Node<T>> Children { get; set; }
}
公共类节点
{
公共T值{get;set;}
公共列表子项{get;set;}
}

在您的特定示例中,
T
将是一个
目录
对象。您可以始终向
节点添加另一个列表属性,该属性包含特定节点上的文件,或者简单地将目录对象存储在
值中,然后枚举它以获取文件。

为什么不直接传递
System.IO.DirectoryInfo
的列表?@HighCore我知道当前问题的解决方案(传递路径或
DirectoryInfo
对象)。我想知道的是,当我处理其他基于树的信息时,是否存在预先存在的通用解决方案。如果框架中的某些东西已经为我这样做了,我不想重新发明轮子。