我有以下课程:
public class Core {
SyncList<myItem> ITEM = new SyncList<myItem>;
public void addSubitem(){
subItem i = new subItem();
i.itemType = "TYPE1"; // not updating
ITEM[0].sItem.Add(i);
}
}
public class myItem {
public SyncList<subItem> = sItem new SyncList<subItem>();
}
public class subItem {
public string itemType { get; set; }
public subItem(){
this.itemType = "TYPE1"; // not updating
}
}
这是我在主表单上定义它的方式:
public static Core core { get; set; }
core = new Core(); // assigned in form constructor
这就是我在onClick事件中的称呼方式:
core.addSubitem();
但它不会更新,并且itemType变量始终为null。我不明白为什么会发生这种情况..有什么想法吗?谢谢!
答案 0 :(得分:1)
如果我理解正确,您想在项目列表中添加一个SubItem。 你不能像你想要的那样直接做到。
以下是我的建议:
public class Core {
public SyncList<MyItem> Items{get; private set;}
public Core(){
Items = new SyncList<MyItem>;
}
public void AddSubItem(){
MyItem item = new MyItem();
SubItem i = new SubItem();
i.ItemType = "TYPE1";
item.SubItems.Add(i);
Items.Add(item);
}
}
public class MyItem {
public SyncList<SubItem> SubItems {get; private set;}
public SubItem(){
SubItems = new SyncList<SubItem>();
}
}
public class SubItem {
public string ItemType { get; set; }
}
然后以您的主要形式:
public static Core Core { get; set; }
Core = new Core(); // assigned in form constructor
在点击事件中,按照以下方式调用您的方法:
Core.AddSubItem();
答案 1 :(得分:1)
我不知道SyncList是什么,但我用List&lt;&gt;()尝试了你的代码。有一些问题现在有效。
namespace Test
{
public class Core
{
List<MyItem> MyItemList = new List<MyItem>();
public void AddSubitem()
{
SubItem sItem = new SubItem();
sItem.ItemType = "TYPE2"; // it's updating
MyItem mItem = new MyItem();
this.MyItemList.Add(mItem);
this.MyItemList[0].sItem.Add(sItem);
}
}
public class MyItem
{
public List<SubItem> sItem = new List<SubItem>();
}
public class SubItem
{
public string ItemType { get; set; }
public SubItem()
{
this.ItemType = "TYPE1"; // it's updating
}
}
}
在下面的代码后,ItemType的值为TYPE2。
Core core = new Core();
core.AddSubitem();