Well, in a garbage collected world where all objects are accessed via references, the subtle difference (in ownership) between strict composition and aggregation blurs a little - so in general (when using classes) it boils down to a field for the other object or collection:
class Building {
private readonly List rooms = new List();
public IList Rooms {get {return rooms;}}
public Address Address {get;set;}
//...
}
class Address {
public string Line1 {get;set;}
public string PostCode {get;set;}
//...
}
class Room {
public string Name {get;set;}
public int Capacity {get;set;}
//...
}
If I've missed the point, please clarify...
Things are more involved when you discuss structs - but generally when talking about OO concepts, struct usage is limited to value fields...