在实现一个包装器类时,为了实现IEnumerable接口,您需要遵循以下步骤:
以下是一个示例实现:
using System;
using System.Collections;
using System.Collections.Generic;
public class FooDictionaryWrapper : IEnumerable<Foo>
{
private Dictionary<int, Foo> _dictionary;
public FooDictionaryWrapper(Dictionary<int, Foo> dictionary)
{
_dictionary = dictionary;
}
public IEnumerator<Foo> GetEnumerator()
{
foreach (var item in _dictionary.Values)
{
yield return item;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
在这个示例中,我们创建了一个名为FooDictionaryWrapper的包装器类,它实现了IEnumerable<Foo>接口。我们在构造函数中接受一个Dictionary<int, Foo>对象,并在GetEnumerator方法中遍历字典的值以返回Foo对象。最后,我们实现了非泛型的IEnumerable接口,将其GetEnumerator方法指向泛型版本的方法。
这样,您就可以使用foreach循环遍历FooDictionaryWrapper对象,就像遍历一个普通的IEnumerable<Foo>集合一样。
领取专属 10元无门槛券
手把手带您无忧上云