У меня есть класс 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 класса не видят один одного.
Ответ Частичный класс может быть вложенным в частичный или не частичный класс. В последнем случае охватывающий класс должен иметь одно определение. Например, 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 ) } } Вывод на консоль будет таким же, как показано выше.