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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д