1

我是新手,所以如果这是一个愚蠢的问题,我深表歉意。我已将我的接口绑定到我构建的类的字段。我将类作为 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 方法外,一切正常,有什么建议吗?

4

4 回答 4

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++
     }
}
于 2013-05-16T13:16:46.453 回答
0

如果您的类型具有状态,则最好在使用它之前创建此类的实例。只需从方法中删除静态关键字,然后使用以下代码:

List<MyClass> myClass = new List<MyClass>();
MyClass myClassInstance = new MyClass();
myClass = myClassInstance.Query("data.xml");
myClassInstance.Assign(myClass, i);
于 2013-05-16T13:13:18.897 回答
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这将用你的第 i 个实例中的值替换第一个实例中的值List<MyClass>

不过,这有点难说,因为您在这里想要实现的目标并不明显。看起来没有任何理由不使用新参数重新实例化对象。

于 2013-05-16T13:14:32.010 回答
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 的公共静态列表。这应该将项目添加到类中的新静态列表并返回列表。目前尚不清楚,因为问题中有两个类名,并且似乎是代码中的一些类型问题。

于 2013-05-16T13:20:47.787 回答