public static void Main(string[] args) {
var messageHolderOne = new AnObjectWithAMessage("One");
var messageHolderTwo = new AnObjectWithAMessage("Two");
PrintCurrentMessages(messageHolderOne, messageHolderTwo);
messageHolderOne.HaveMyMessageMessedWith();
PrintCurrentMessages(messageHolderOne, messageHolderTwo);
messageHolderTwo.Message = "Four";
PrintCurrentMessages(messageHolderOne, messageHolderTwo);
var messer = new MessWithMessages();
messer.SetMessage("Five", messageHolderOne);
messer.SetMessage("Six", messageHolderTwo);
PrintCurrentMessages(messageHolderOne, messageHolderTwo);
private static void PrintCurrentMessages(AnObjectWithAMessage messageHolderOne, AnObjectWithAMessage messageHolderTwo) {
Console.WriteLine($"messageHolderOne: {messageHolderOne.Message}");
Console.WriteLine($"messageHolderTwo: {messageHolderTwo.Message}");
public class AnObjectWithAMessage {
public string Message { get; set; }
public AnObjectWithAMessage(string message) {
public void HaveMyMessageMessedWith() {
new MessWithMessages().SetMessage("Three", this);
public class MessWithMessages {
public void SetMessage(string message, AnObjectWithAMessage messageHolder) {
messageHolder.Message = message;