.NET 4.x Изменить значение переменной, хранящей ссылку - C#

Формулировка задачи:

Добрый день! Столкнулся со следующей задачей, которую не могу решить. Есть два класса 1) Input 2) Output Необходимо сделать возможность создавать привязку между экземплярами этих классов, для этого в классе Input сделано свойство типа Output, хранящее ссылку на необходимый экземпляр класса Output, который необходимо привязать.
class Input
{
      ...
      private Output _output;
      Public Output Output
      {
            get
            { 
                  return _output;
            }
            set
            {
                  _output = value;
            }      
      }
      ...
}
 
class Output
{
      ...
}
Это сделано.
Input input = new Input();
Output output  = new Output();
Input.Output = output;
Но вот еще необходимо сделать возможность менять привязки. То есть, например, в один момент мы присвоили свойству Output объекта input ссылку на объект output1, в другой момент мы хотим привязать к input не output1, а output2... То есть после перепривязки при обращении input.Output мы должны уже обращаться к output2 а не к output1. Следующий код желаемого результата не дает:
Input input = new Input();
Output output1  = new Output();
Output output2  = new Output();
Input.Output = output1;
...
...
...
Input.Output = output2;
Помогите пожалуйста разобраться. Как значение переменной, хранящей ссылку на какой-то объект, изменить на ссылку на другой экземпляр этого же класса!

Код к задаче: «.NET 4.x Изменить значение переменной, хранящей ссылку - C#»

textual
    class Program
    {
        class Input
        {
 
            private Output _output;
            public Output PropertyOutput
            {
                get
                {
                    return _output;
                }
                set
                {
                    _output = value;
                }
            }
 
            public Input()
            {
                PropertyOutput = new Output();
            }
 
        }
 
        class Output
        {
            static int counter;
            int number;
            public int Number
            {
                get
                {
                    return number;
                }
                set
                {
                    number = value;
                }
            }
            public Output()
            {
                number = counter++;
            }
 
            public void Print()
            {
                Console.WriteLine("Otput number : {0} ", number);
            }
        }
 
        public static void Main()
        {
            Input input = new Input();
            Output[] OutputArray = new Output[3] { new Output(), new Output(), new Output() };
            foreach (Output item in OutputArray)
            {
               input.PropertyOutput = item;
                input.PropertyOutput.Print();
            }
 
            Console.ReadKey();
        }

8   голосов, оценка 3.875 из 5


СОХРАНИТЬ ССЫЛКУ