title: implementation of bidirectional association in c# :How its possible to pass one object as a parameter only for one time in c#
body: <p>I hope to phrase my question correctly (if not please help me to entitle it better)
   ,to make it clear,please take a look at my code.</p>
  
  <hr>
  
  <pre><code>class Factory
  {
      public string Name { get; set; }
  
      private Person _manager;
      public Person Manager 
      {
          get
          {
              return (_manager );
          }
          set
          {
              _manager = value;
              if (_manager.WorkPlace!=this)
              {
                  _manager.WorkPlace = this;
              }
          }
      }
  
      public Factory(string name, Person manager)
      {
          Name = name;
          Manager = manager;
          if (Manager.WorkPlace ==null)
          {
              Manager.WorkPlace = this;
          }
  
      }
  
      public Factory(string name, string managerFullName, int managerAge)
      {
          Name = name;
          Manager = new Person(managerFullName, managerAge);
  
          if (Manager.WorkPlace != this)
          {
              Manager.WorkPlace = this;
          }
  
      }
  
      public void ShowInfo()
      {...}
  
  }
  </code></pre>
  
  <p>my problem appears when using first constructor of factory class</p>
  
  <pre><code>class Program
  {
      static void Main(string[] args)
      {
          Person oPerson1=new Person("Jon",30);
  
          factory oFactory1=new Factory("f1",oPerson1);
          factory oFactory2=new Factory("f2",oPerson1);
          factory oFactory3=new Factory("f3",oPerson1);
          factory oFactory4=new Factory("f4",oPerson1);
          ...
      }
  }
  </code></pre>
  
  <p>as you can see in this constructor <strong><em>I can use one person object(as a manger) more than one time
  ,in fact so many times it could be used , and there is nothing to prevent me</em></strong>  . that
   means <strong><em>one person could manage many factories,I dont want it.I want a person could 
  mange only one factory</em></strong>,how is that  possible?</p>
  
  <hr>
  
  <p>to handle this issue some workarounds came to my mind.<br />
  1-  deleting that constructor and using only  another one .(but I am looking for a better solution,I would like to have that constructor.)<br />
  2- throwing an  exception in Run time that i hate it</p>
  
  <hr>
  
  <p>as i know the c# compiler has nothing to prevent passing an object more than one time.<br/>
  should I change something in design of the class?
  what is your recommendation? what is the best solution ?thank u so much for any advices.</p>
  
  <p><em><strong>EDIT:Our business Logic</em></strong></p>
  
  <p>each factory has a manager ,its meaningless to have a factory without a manger.</p>
  
  <p>and a person could be a manager.</p>
  
  <p><strong>person(1..1)-------------(0..1)factory</strong></p>