我是新手,所以如果这是一个愚蠢的问题,我道歉。我已将界面绑定到我构建的类的字段。我将类作为类型T的列表启动,现在我正在尝试将字段的赋值增加到列表的索引。
我的代码看起来像这样。 我的班级:
class MyClass
{
public string ID { get; set; } // I want these to increment
public string MyVar { get; set; }
public MyClass()
{
this.ID = "";
this.MyVar = "";
}
public MyClass (string id, string myvar)
{
this.ID = id;
this.MyVar = myvar
}
public static List<MyClass> Query(string datasource)
{
XElement data = XElement.Load(datasource);
List<MyQuiz> query = (from d in data.Descendants("Object")
select new MyQuiz((string)d.Element("ID"),
(string)d.Element("MyVar")
)).ToList();
return query;
}
public static List<MyClass> Assign (List<MyClass> assign, int i)
{
i++
//Can't do this because it's static, need another way!
this.ID = assign[i].ID;
this.MyVar = assign[i].MyVar;
}
启动代码
int i = 0;
List<MyClass> myClass = new List<MyClass>();
myClass = MyClass.Query("data.xml");
MyClass.Assign(myClass, i);
和xml
<root>
<Object>
<ID>1</ID>
<MyVar>TESTING</MyVar>
</Object>
<root>
一切正常,除了Assign方法,有什么建议吗?
答案 0 :(得分:0)
如果您的类型具有状态,最好在使用之前创建此类的实例。 只需从方法中删除静态关键字,然后使用以下代码:
List<MyClass> myClass = new List<MyClass>();
MyClass myClassInstance = new MyClass();
myClass = myClassInstance.Query("data.xml");
myClassInstance.Assign(myClass, i);
答案 1 :(得分:0)
看起来你正试图做这样的事情:
public static List<MyClass> Assign (MyClass target, List<MyClass> assign, int i)
{
i++;
target.ID = assign[i].ID;
target.MyVar = assign[i].MyVar;
}
哪个会将MyClass
的第一个实例中的值替换为List<MyClass>
有点难以辨别,因为你在这里想要实现的目标并不明显。看起来没有任何理由不用新参数重新实例化对象。
答案 2 :(得分:0)
我想你想初始化Id:
public static List<MyClass> Assign (List<MyClass> assign, int i)
{
for(int j=0;j<assign.Count;j++){
assign[j].ID = i;
i++
}
}
答案 3 :(得分:0)
public static List<MyClass> myClassList = new List<MyClass>();
public static List<MyClass> Assign (List<MyQuiz> assign, int i)
{
myClassList.Add(new MyClass(assign[i].ID, assign[i].MyVar));
return myClassList;
}
根据您的问题,这是您正在寻找的。创建MyClass的新实例,将其添加到列表中,并根据i。
分配字段值编辑:为您的班级添加了MyClass的公共静态列表。这应该将项添加到类中的新静态列表并返回列表。目前还不清楚,因为问题中有两个类名,似乎是代码中的某些类型问题。