我需要在这个类上有一个GetEnumerator,以便能够遍历数组A的任何项目。我该怎么做?
IObsColDoor[] A = {
new IObsColDoor<S1>(),
new IObsColDoor<S2>()
};
public interface IObsColDoor { }
public class ObsColDoor<T> : ObservableCollection<T>, IObsColDoor
where T : new()
{
public ObsColDoor() { }
public ObsColDoor(int n = 0)
{
for (int i = 0; i < n; i++)
this.Add(new T());
}
}
像这样使用它:
IObsColDoor b = A[0];
使用b:
id(b);
.....
void id(IObsColDoor d)
{
foreach (T1 si in d) { etc };
其中T1是S1和S2的基类
答案 0 :(得分:0)
如果您要声明foreach
个变量并在IObsColDoor
中使用它们,则需要从IEnumerable
继承public interface IObsColDoor : IEnumerable { }
:
ObsColDoor<T>
由于ObservableCollection<T>
是IEnumerable
,您不需要在ObsColDoor<T>
课程中实施IObsColDoor
,因为它已经实施。
请注意:
IEnumerable
没有任何通用功能,您必须使用IEnumerable<T>
代替IObsColDoor
IEnumerable
的任何其他实现也必须实现{{1}}。