首先,我为过度简化而道歉,但我有这个问题让我发疯。它应该工作 - 这是简单的代码,没有什么花哨的.......
我有这个对象
public class Stuff
{
private int intStuff;
private string strStuff;
public Stuff(int StuffID, string Stuff)
{
intStuff = StuffID;
strStuff = Stuff;
}
public int StuffID
{
get { return intStuff; }
set { intStuff = value; }
}
public string Stuff
{
get{return strStuff;}
set{strStuff=value;}
}
}
本课程使用的是:
public class StuffandThings
{
private List<Stuff> lstMyStuff;
public List<Stuff> StuffList
{
set { lstMyStuff = value; }
get { return lstMyStuff; }
}
public StuffandThings()
{
lstMyStuff = new List<Stuff>();
}
}
在Global.asax中声明为静态&lt;&lt;&lt;&lt;&lt;这可能很重要
public static StuffAndThings MyStuff;
protected void Application_Start(object sender, EventArgs e)
{
MyStuff = new StuffandThings();
}
当我在代码中使用它时:
foreach (string strStuff in lstStuff)
{
objStuff = new Stuff(intStuff,strStuff);
Global.MyStuff.StuffList.Add(objStuff);
}
它编译并且我可以在debug(它是一个WCF Web服务)中运行,我的变量(intStuff和lstStuff)都是有效的。但是当我在浏览器中单击Service.svc时,我得到以下错误。
CS1502:'System.Collections.Generic.List.Add(Stuff)'的最佳重载方法匹配有一些无效的参数
我不认为我能看到这棵树上的树木,而且这些互联网没有帮助。
Aso,全局对象中的所有其他对象和函数都很好 - 主要是哈希表,我的代码一直运行直到我尝试添加此功能。我会使用哈希表,但我需要密钥不是唯一的;
有什么想法吗?
由于
P
答案 0 :(得分:1)
你应该在循环中声明objStuff的类型。始终在最小范围内声明变量:
Stuff objStuff = new Stuff(intStuff,strStuff);
Global.MyStuff.StuffList.Add(objStuff);
如果由于objStuff已经在父作用域中使用而无法编译,那么找一个新名称 - 例如objStuff2,那么一切都应该有效。
你的代码中声明了objStuff在哪里?你可能正在接受其他一些恰好被称为objStuff的声明,但实际上是无关的。