Library.Program недоступен в силу его уровня защиты. Возможна обработка только общих типов - C#
Формулировка задачи:
В общем суть такова. Запускаю прогу, ввожу add, добавляю через запятую имя автора, название книги, название издательства, потом нажимаю enter и ввожу команду save, чтобы сохранить книгу. После этого выскакивает ошибка: "Library.Program недоступен в силу его уровня защиты. Возможна обработка только общих типов."
Пытался поменять public на private не помогло. В чём косяк?
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml.Serialization;
namespace Library
{
class Program
{
public class Book
{
public string Author { get; set; }
public string Name { get; set; }
public string Publisher { get; set; }
public Book(
string author,
string name,
string publisher)
{
this.Author = author;
this.Name = name;
this.Publisher = publisher;
}
public Book()
{
}
}
private static List<Book> books;
static void Main(string[] args)
{
books = !File.Exists("lib.xml") ? new List<Book>() : DeserializeFromXML();
bool flag = true;
while (flag)
{
switch (Console.ReadLine())
{
case "add":
Console.WriteLine("Что бы добавить книгу введите через запятую\n" + "Имя автора, название книги, название издательства");
string readLine = Console.ReadLine();
if (readLine != null)
{
string[] temp = readLine.Split(',');
Add(temp[0], temp[1], temp[2]);
}
break;
case "exit":
flag = false;
break;
case "print":
Print();
break;
case "delete":
Console.WriteLine("Введите название книги которую вы хотите удалить");
Delete(Console.ReadLine());
break;
case "save":
SerializeToXML(books);
break;
case "load":
books = DeserializeFromXML();
break;
default:
Console.WriteLine("Нет такой команды");
break;
}
}
}
private static void Delete(string name)
{
foreach (Book book in books.Where(b => b.Name == name))
{
Console.WriteLine("Удаление...");
Console.WriteLine("Название: {0}, Автор: {1}, Издательство: {2}", book.Name, book.Author, book.Publisher);
books.Remove(book);
break;
}
}
private static void Print()
{
foreach (Book book in books)
{
Console.WriteLine("Название: {0}, Автор: {1}, Издательство: {2}", book.Name, book.Author, book.Publisher);
}
}
private static void Add(
string author,
string name,
string publisher)
{
books.Add(new Book(author, name, publisher));
}
static public void SerializeToXML(List<Book> lib)
{
XmlSerializer serializer = new XmlSerializer(typeof(List<Book>)); // Ошибка! Library.Program недоступен в силу его уровня защиты. Возможна обработка только общих типов.
TextWriter textWriter = new StreamWriter(@"lib.xml");
serializer.Serialize(textWriter, lib);
textWriter.Close();
}
static List<Book> DeserializeFromXML()
{
XmlSerializer deserializer = new XmlSerializer(typeof(List<Book>));
TextReader textReader = new StreamReader(@"lib.xml");
List<Book> lib = (List<Book>)deserializer.Deserialize(textReader);
textReader.Close();
return lib;
}
}
}Решение задачи: «Library.Program недоступен в силу его уровня защиты. Возможна обработка только общих типов»
textual
Листинг программы
books.Remove(bookToDelete);