#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 ); } } Вывод на консоль будет таким же, как показано выше.
Комментариев нет:
Отправить комментарий