0

使用以下代码,我尝试传入具有 items 列表的 'CachedModel model' List<CachedModel.CachedModelItem>。但是 foreach 不喜欢“项目”。它也不像 Item.GetType() 或 Type myType = Item.GetType(); foreach(myType 项目 ...

错误是:“找不到类型或命名空间名称‘Item’(您是否缺少 using 指令或程序集引用?)”

有任何想法吗?

称呼:

FillCache<CachedModel.CachedModelItem>(model, CachedEntitiesID);

方法:

public void FillCache<cachedModelItem>(ICachedModel model, int CachedEntitiesID)
        where cachedModelItem: ICachedModelItem, new()
    {
        ICachedModelItem Item = new cachedModelItem();

        foreach (Item item in model.Items)
        {
            string foo = item.foo.ToString();
        }
    }
4

2 回答 2

1

我不是 100% 确定,但如果你说那Item是类型,ICachedModelItem那么尝试将方法更改为:

public void FillCache<cachedModelItem>(ICachedModel model, int CachedEntitiesID)
        where cachedModelItem: ICachedModelItem, new()
{
    foreach (ICachedModelItem item in model.Items)
    {
        string foo = item.foo.ToString();
    }
}
于 2012-11-26T17:31:01.203 回答
1

更重要的是,你不必知道。让编译器用 var 关键字来计算:

foreach (var item in model.Items)
{
    // Do something
}

编辑:我不完全确定您在问什么,但可能是您正在寻找 .Cast 或 .OfType 来自 LINQ 的扩展方法。如果您确定列表中的所有项目实际上都是您提供的类型,请使用 Cast。如果某些项目可能不匹配,请使用 OfType。例如:

foreach (var item in model.Items.OfType<MyType>())
{
    // Do something
}
于 2012-11-26T17:33:42.803 回答