private class PhysicalThing : IPhysicalThing
public IPhysicalThing nextTo
private class Participant:IParticipant {
class Person : IPhysicalThing, IParticipant
private PhysicalThing physical = new PhysicalThing();
private Participant participant = new Participant();
get { return participant.name; }
set { participant.name = value; }
get { return physical.height; }
set { physical.height = value; }
public IPhysicalThing nextTo
get { return physical.nextTo; }
set { physical.nextTo = value; }
class Furniture : IPhysicalThing
private PhysicalThing physical = new PhysicalThing();
get { return physical.height; }
set { physical.height = value; }
public IPhysicalThing nextTo
get { return physical.nextTo; }
set { physical.nextTo = value; }
class Company : IParticipant
private Participant participant = new Participant();
public override string ToString()
return "Company(name=" + name + ")";
get { return participant.name; }
set { participant.name = value; }
static void call(IParticipant p)
Console.WriteLine("Calling: " + p.name);
public static void Main()
Company company = new Company() {name = "Facebook"};
Person person = new Person() {name = "Mark",height="6 feet" };
Furniture furniture = new Furniture() {nextTo=person, height = "3 meters"};
person.nextTo = furniture;
Console.WriteLine(company);
Console.WriteLine(person);
Console.WriteLine(furniture);