foreach循环中的c#泛型

时间:2016-10-04 12:42:42

标签: c# generics foreach type-conversion

我对正确的语法感到困惑,以便迭代泛型类的集合。所有这些类都是派生的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?

感谢。

0 个答案:

没有答案