错误:不包含定义...也没有扩展方法

4

我有以下错误信息:

'System.Collections.Generic.Dictionary<int,SpoofClass>' does not
contain a definition for 'biff' and no extension method 'biff'
accepting a first argument of type
'System.Collections.Generic.Dictionary<int,SpoofClass>' could be found
(are you missing a using directive or an assembly reference?)

我在Stack Overflow上查找了相关问题,发现这个问题似乎和我遇到的问题相似(如果不是完全一样)。然而,我尝试了被接受的答案提供的解决方案,但仍然没有任何进展。它表现得好像我缺少一个使用语句,但我几乎可以确定我已经拥有所有需要的使用语句。
以下是产生错误的部分代码:
using locationOfSpoofClass;
...

Dictionary<int, SpoofClass> cart = new Dictionary<int, SpoofClass>();
foreach (var item in dbContext.DBView)
{
    cart.biff = item.biff;
    ...
}

伪造类文件:

namespace locationOfSpoofClass
{
    public class SpoofClass
    {
        public int biff { get; set; }
        ...
    }
}

如果我对变量等进行了重命名,导致您感到困惑,请见谅。如果无法理解或者太难跟踪,或者其他信息与解决方案有关,请让我知道。谢谢!

2个回答

5
问题出在这个部分:cart.biffcart 的类型是 Dictionary<int, SpoofClass>,而不是 SpoofClass

我只能猜测你想做什么,但以下代码可以编译通过:
Dictionary<int, SpoofClass> cart = new Dictionary<int, SpoofClass>();
int i=0;
foreach (var item in dbContext.DBView)
{
    cart.Add(i, new SpoofClass { biff = item.biff });
    ++i;
}

3
您需要访问给定键的字典值。大致如此。
foreach(var item in dbContext.DBView)
{
    foreach(var key in cart.Keys)
    {
        cart[key].biff = item.biff;
    }
}

那段代码无法编译,因为cart[key]的类型是SpoofClass,而item.biff是int类型。 - Ben Robinson
@Dylan:现在你的代码可以编译了,但是它没有意义 :) 在循环之后,字典中的所有条目都将具有“DBView”中最后一项的“biff”值。 - Daniel Hilgarth
@Daniel,虽然你是正确的,但似乎这就是OP想要做的事情;-) - Ben Robinson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接