#c_sharp #ооп
У меня есть класс Library, в котором есть несколько вложенных классов: public class Library { class Book { /*Some code*/ } class Author { /*Somecode*/ } class Series { /*Somecode*/ } class Topic { /*Somecode*/ } } Но очень много кода в одном файле, поэтому я решил вынести классы Book, Author, Series, Topic в отдельные файлы. Для этого я их сделал partial. public class Library { partial class Book { } partial class Author { } partial class Series { } partial class Topic { } } //Books.cs partial class Book { /*Some code*/ } ... Но что-то не работает, потому, что части partial класса не видят один одного.
Ответы
Ответ 1
Частичный класс может быть вложенным в частичный или не частичный класс. В последнем случае охватывающий класс должен иметь одно определение. Например, using System; class Library { public partial class Book { public string Title { get; set; } } public partial class Book { public string Author { get; set; } } public Book book; } public class Test { public static void Main() { Library lib = new Library { book = new Library.Book { Title = "A good book", Author = "me" } }; Console.WriteLine( "\"{0}\" is written by {1}", lib.book.Title, lib.book.Author ); } } Вывод на консоль "A good book" is written by me Если же вы хотите, чтобы и охватывающий класс был определен в различных частях вместе с частичным вложенным классом, то вы его также должны объявить с модификатором partial. Например, using System; partial class Library { public partial class Book { public string Title { get; set; } } } partial class Library { public partial class Book { public string Author { get; set; } } } partial class Library { public Book book; } public class Test { public static void Main() { Library lib = new Library { book = new Library.Book { Title = "A good book", Author = "me" } }; Console.WriteLine( "\"{0}\" is written by {1}", lib.book.Title, lib.book.Author ); } } Вывод на консоль будет таким же, как показано выше.
Комментариев нет:
Отправить комментарий