我可以看到你创建了一个字典:
public Dictionary<string, string> TipList
{
get { return TipList; }
set { TipList = value; }
}
我从服务中获取一些数据,我想将这些数据放入我的字典中,如下所示:
Dictionary<string, string> dict = new Dictionary<string, string>();
try
{
using (var response = (HttpWebResponse)request.GetResponse())
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
var objText = reader.ReadToEnd();
var list = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(objText).ToDictionary(x => x.Keys, x => x.Values);
object o;
object o1;
foreach (var item in list)
{
o = item.Value.ElementAt(0);
o1 = item.Value.ElementAt(1);
dict.Add(o.ToString(), o1.ToString());
}
GlobalVariable.TipListCache.Add(NewCarReceiption.CSystem.Value, dict);
NewCarReceiption.TipList = dict.Where(i=>i.Key!=null & i.Value!=null).ToDictionary(x => x.Key, x => x.Value);
}
}
}
但是在上面的函数试图将他们的数据放入我的字典后运行我的代码。我的应用程序返回此错误:
答案 0 :(得分:3)
你的setter正在调用TipList
属性的setter(本身),它正在调用它的setter等等 - 导致异常。
像这样初始化:
private Dictionary<string, string> _tipList;
public Dictionary<string, string> TipList
{
get { return _tipList; }
set { _tipList = value; }
}
或者最好,如果您不需要默认行为,请使用auto-implemented property:
public Dictionary<string, string> TipList { get; set; }
从C#6.0开始,您也可以像这样初始化它(使用自动属性初始值设定项):
public Dictionary<string, string> TipList { get; set; } = new Dictionary<string, string>();
答案 1 :(得分:1)
你一遍又一遍地设置相同的属性,进入无限循环。
如果你的getter和setter中不需要任何额外的逻辑,你可能会让它自动实现:
public Dictionary<string, string> TipList
{
get;
set;
}
如果你的getter和setter中需要更多逻辑,你必须自己添加一个支持字段:
private Dictionary<string, string> tipList;
public Dictionary<string, string> TipList
{
get
{
DoSomethingBeforeGet();
return this.tipList;
}
set
{
DoSomethingBeforeSet();
this.tipList = value;
DoSomethingAfterSet();
}
}