Возникли проблемы при передаче списка в качестве аргумента в C # - PullRequest
0 голосов
/ 06 января 2019

У меня проблемы с передачей списка в качестве аргумента. Я не уверен, что я делаю неправильно. Далее у меня есть список AssociatedTexts, который я добавляю в список книг с помощью функции addBook. Выбранные AssociatedTexts не сохраняются и не назначаются этому конкретному элементу списка в списке «Книги».

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

    Inventory.addBook(dictionary);

Функция addBook выглядит следующим образом:

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

А вот конструктор для Книги:

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

Вы запросили весь класс Книги, поэтому вот оно:

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. Я сопоставляю их с представлениями данных, и пользователь может добавлять в него свои собственные книги со своими различными ассоциированными текстами, но у меня возникают проблемы с привязкой каждого списка ассоциированных текстов к каждой книге

1 Ответ

0 голосов
/ 06 января 2019

Поскольку каждая книга должна иметь свой собственный список связанных текстов, AssociatedTexts не должен быть статичным. В противном случае все книги будут иметь один и тот же список.

Кроме того, я предлагаю заменить BindingList на List, поскольку Book является типичным классом модели и не должен содержать таких элементов, связанных с пользовательским интерфейсом.

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...