Я вижу nested-class
как объект, который имеет смысл только в контексте другого объекта;и чья логика требует свойств этого другого объекта.Учитывая это, я никогда не проектировал nested-class
, который я не использовал для рефакторинга.И я вижу воспринимаемую потребность в public nested-class
в качестве красного флага для проблемного дизайна.
Несмотря на это, ваш вопрос заставляет меня задуматься о том, являются ли они потенциально полезными.Поэтому, хотя я не буду использовать такой дизайн, он может работать для вас.
Я хотел бы упомянуть, что const
следует использовать только для вещей, которые никогда не меняются.Как часы в день или скорость света.Я не могу точно сказать по вашему вопросу, но что-то вроде Xml.Name
кажется переменным.Я предлагаю использовать readonly
для этих свойств.Возможно, static readonly
, если они согласованы во всех случаях.Это избавит вас от многих подводных камней const
.
Ниже приведен class
, который я смоделировал, чтобы продемонстрировать то, что я бы порекомендовал для вашего дизайна:
public class MyClass
{
public string Title { get; set; }
Xml _xml;
public Xml MyXml
{
get { return _xml; }
set { _xml = value; }
}
public MyClass(string xmlName, object xmlAttributes)
{
_xml = new Xml(xmlName, xmlAttributes);
}
public class Xml
{
private readonly string _name;
public string Name
{
get { return _name; }
}
private readonly object _attributes;
internal object Attributes
{
get { return _attributes; }
}
public Xml(string name, object attributes)
{
_name = name;
_attributes = attributes;
}
}
}