繁体   English   中英

在 C# 中将列表作为参数传递时遇到问题

[英]Having trouble passing list as argument in c#

我在尝试将列表作为参数传递时遇到问题。 我不确定我做错了什么。 在下面,我有一个 AssociatedTexts 列表,我使用 addBook 函数将其添加到 Books 列表中。 正在选择的 AssociatedTexts 不会被保存并分配给 Books 列表中的特定列表项。

Book dictionary = new Book(ID, textBox1.Text, Product.AssociatedTexts);

    Inventory.addBook(dictionary);

addBook 函数如下所示:

    public static void addBook(Book dictionary)
{
    Books.Add(dictionary);
}

这是 Book 的构造函数:

 public Book(int bookID, string name, BindingList<Book> assocText)
{
    BookID = bookID;
    Name = name;
    AssociatedTexts = assocText;
}

你请求了整个 Book 类,所以这里是:

public class Book
{
    public static BindingList<Text> AssociatedTexts { get; set; }

public string Name { get; set; }

public int BookID { get; set; }
public int TextID { get; private set; }



public Book()
{

}

public Book(int bookID, string name)
{
    BookID = productID;
    Name = name;
}

public Book(int bookID, string name, BindingList<Text> assocText)
{
    BookID = bookID;
    Name = name;
    AssociatedTexts = assocText;


}
public static void addAssociatedTexts(Text text)
{
    AssociatedTexts.Add(text);
}

public static bool removeAssociatedText(int textID)
{
    bool ret = false;
    if (Book.AssociatedTexts.Count > textID)
    {
        Book.AssociatedTexts.RemoveAt(textID);
        ret = true;
    }
    else
    {
        ret = false;
    }
    return ret;
}

public Part lookupAssociatedTexts(int searchPart)
{
    for (int i = 0; i < AssociatedTexts.Count; i++)
    {
        if (AssociatedTexts[i].TextID == searchPart)
        {
            return AssociatedTexts[i];
        }
    }
    return null;
}

我想要完成的是让书籍列表中的每个条目都有自己的 AssociatedTexts 列表。 我将这些映射到 datagridviews 上,用户可以将自己的书籍与自己不同的关联文本添加到它上面,但是我无法将每个关联文本列表与每本书相关联

由于每本书都有自己的关联文本列表, AssociatedTexts不能是静态的。 否则,所有书籍将共享相同的列表。

另外,我建议将 BindingList 替换为 List,因为 Book 是典型的模型类,不应包含此类与 UI 相关的成员。

public class Book
{
    public List<Text> AssociatedTexts { get; set; }
    public string Name { get; set; }
    public int BookID { get; set; }

    public Book(int bookID, string name, IEnumerable<Text> assocText)
    {
        BookID = bookID;
        Name = name;
        AssociatedTexts = assocText.ToList();
    }

    public void addAssociatedText(Text text)
    {
        AssociatedTexts.Add(text);
    }

    public bool removeAssociatedText(int textID)
    {
        bool ret = false;
        if (AssociatedTexts.Count > textID)
        {
            AssociatedTexts.RemoveAt(textID);
            ret = true;
        }
        else
        {
            ret = false;
        }
        return ret;
    }

    public Part lookupAssociatedTexts(int searchPart)
    {
        for (int i = 0; i < AssociatedTexts.Count; i++)
        {
            if (AssociatedTexts[i].TextID == searchPart)
            {
                return AssociatedTexts[i];
            }
        }
        return null;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM