c# - 类的 foreach 函数
问题描述
我创建了以下类:
public class LocationTreeAlsTree
{
public ComponentRef PartsOfTree { get; set; }
public class ComponentRef
{
public string ID { get; set; }
public List<ComponentRef> Children { get; set; }
}
static List<ComponentRef> LoadUnits(IEnumerable<XElement>
_componentenRef)
{
return _componentenRef.Select(x => new ComponentRef()
{
ID = x.Attribute("ref").Value,
Children = LoadUnits(x.Elements("componentRef"))
}).ToList();
}
public LocationTreeAlsTree(string _filename)
{
// Dateiname des LocationTree-Files
string locationtreeFile = _filename;
// Neuer Streamreader um Encoding UTF16 Fehler zu umgehen
StreamReader reader = new StreamReader(locationtreeFile, Encoding.UTF8);
XDocument doc = XDocument.Load(reader);
// Generiere eine Tree-Struktur vom Location Tree
List<ComponentRef> units = LoadUnits(doc.Descendants("componentRef"));
//ComponentRef Tree = new ComponentRef();
PartsOfTree = units.First();
units = null;
}
}
我试图在这个类中实现 foreach 函数。我不知道如何为这个类实现 IEnumerable。有人能帮助我吗?
解决方案
想象一下你想循环遍历SomeClass
你可以从 IEnumerable 继承的列表
public class LocationTreeAlsTree : IEnumerable<SomeClass>
{
public List<SomeClass> Something; // that is filled somewhere in class
public IEnumerator<SomeClass> GetEnumerator()
{
return Something.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
现在你可以像这样使用它:
LocationTreeAlsTree tree = new LocationTreeAlsTree();
foreach(var t in tree)
{
// do something
}
推荐阅读
- go - 进程在 select.go 上花费太多时间阻塞而没有明确的相应操作
- r - 查找与其他几列相比唯一的列中的字母,并将它们分段计数
- tensorflow - 向现有的张量流模型添加新的分类器
- azure - 无法在 azure AKS 中为节点池创建节点标签
- python - 如何解析奇怪的 Python 请求响应?
- java - 如何使用 slf4j 在 java 中制作我自己的库,但使用我的 lib 的代码也会使用 slf4j?
- dax - DAX SUMMARIZECOLUMNS 函数 - 此函数有何用处?
- c# - 由于 PropertyGrid,mahapps metro 对话框打开速度慢的可能原因
- multithreading - 使用多线程 JDBC 创建/更新/插入查询的数据库访问问题
- django - 如何使用 from ..media 在 .py 文件中导入媒体目录