我对正确的语法感到困惑,以便迭代泛型类的集合。所有这些类都是派生的FBase:
public abstract class FBase : FormElementBaseCL
{
public FBase(FormElementGroupBaseCL parentElement, int linkedFieldID) : base(parentElement)
{
LinkedFieldID = linkedFieldID;
}
public int LinkedFieldID { get; set; }
}
以下是派生类:
public abstract class FEdit<T> : FBase
{
public FEdit(FormElementGroupBaseCL parentElement, int linkedFieldID) : base(parentElement, linkedFieldID)
{
LinkedFieldID = linkedFieldID;
}
public abstract T GetElementDTO();
}
public class FNumberEdit : FEdit<FieldElementNumberEditDTOCL>
{
public FNumberEdit(FormElementGroupBaseCL parentElement, int linkedFieldID) : base(parentElement, linkedFieldID)
{
}
public override FieldElementNumberEditDTOCL GetElementDTO()
{
/// implementation
}
}
public class FTextEdit : FEdit<FieldElementTextEditDTOCL>
{
public FTextEdit(FormElementGroupBaseCL parentElement, int linkedFieldID) : base(parentElement, linkedFieldID)
{
}
public override FieldElementTextEditDTOCL GetElementDTO()
{
/// implementation
}
}
现在,我想迭代List,但是它说你必须指定T类型的1个参数:
foreach (FEdit item in this.DataEntrySection.AllSubElements.FindAll(f => (f as FBase) != null).Cast<FBase>())
{
};
问题是,如何在循环中访问item.GetElementDTO?
感谢。