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