I think that you may be able to solve your problem by backing your properties with private local variables. e.g.
class Person {
private string m_FirstName = string.Empty;
private string m_LastName = string.Empty;
public string FirstName {
get { return m_FirstName; }
set { m_FirstName = value; }
}
public string LastName {
get { return m_LastName; }
set { m_LastName = value;}
}
public string FullName {
get { return m_FirstName + " " + m_LastName; }
}
public IEnumerable Children { get; set; }
}
Assuming the object initializer sets the properties in the order that you specify them in the initialization code (and it should), the local variables should be accessable (internally by the FullName readonly property).