/// <summary>
///
/// </summary>
/// <param name="oldPerson"></param>
/// <param name="newPerson"></param>
private void CreatePerson( Person oldPerson, Person newPerson )
{
Address address;
if ( oldPerson.Address is WorkAddress )
address = new WorkAddress();
else
address = new HomeAddress();
newPerson.Name = oldPerson.Name;
newPerson.Address = address;
if ( oldPerson.Address != null )
{
if ( oldPerson.Address is HomeAddress )
{
( newPerson.Address as HomeAddress ).HouseNumber =
( oldPerson.Address as HomeAddress ).HouseNumber;
if ( oldPerson.Address is WorkAddress )
{
( newPerson.Address as WorkAddress ).PhoneNumber =
( oldPerson.Address as WorkAddress ).PhoneNumber;
}
}
else
{
( newPerson.Address as HomeAddress ).HouseNumber =
"Service Receive object type of: " + oldPerson.Address.GetType().Name;
}
}
else
{
( newPerson.Address as HomeAddress ).HouseNumber = "987654 ELM STREET";
}
}
}
/// <summary>
///
/// </summary>
[XmlRoot( Namespace = "urn:emp:data" )]
public class Person
{
public string Name;
public Address Address;
}
/// <summary>
///
/// </summary>
[XmlRoot( Namespace = "urn:emp:data" )]
[XmlInclude( typeof( HomeAddress ) )]
[XmlInclude( typeof( WorkAddress ) )]
public abstract class Address
{
}
/// <summary>
///
/// </summary>
[XmlRoot( Namespace = "urn:emp:data" )]
[XmlInclude( typeof( WorkAddress ) )]
public class HomeAddress : Address
{
public string HouseNumber;
}
/// <summary>
///
/// </summary>
[XmlRoot( Namespace = "urn:emp:data" )]
public class WorkAddress : HomeAddress
{
public string PhoneNumber;
}
}