As of c# 6.0, which is now released, you should just do this, public class Room { public Room(Client client) { this.Client = client; } public Client Client { get; } } public class Client { public Client(long id) { this.Id = id; } public long Id { get; } } Raising a property of `Client` to `Room` is an obvious breach of encapsulation and the DRY principle. If you need to access the `Id` of a `Client` of a `Room` you can do, var clientId = room.Client?.Id; Note the use of the [Null Conditional Operator][1], `clientId` will be an `long?`, if `Client` is `null`, `clientId` will be `null`, otherwise `clientId` will have the value of `Client.Id`. [1]: https://msdn.microsoft.com/en-us/library/Dn986595.aspx