title: Dynamically Create Object and Add to List
body: <p>I would like to use a method to create an instance of <code>Adventurer</code> and then add it to a <code>List&lt;Adventurer&gt;</code>. A for loop will create 20 instances of <code>Adventurer</code>. I am trying to avoid using a constructor since down the road I will have quite a few values to pass in. If what I am trying to do is not possible, I will have to revert to using the constructor.</p>
  
  <p>I need this method to create a new instance of <code>Adventurer</code> and assign values <code>randomGender</code>,<code>randomClass</code>, and <code>name</code> to it. At this point I don't know how. Also, I can't create a new instance and manually name it since this method will be called many times.</p>
  
  <pre><code>    public static Adventurer createAdventurer()
      {
          Array valuesGender = Enum.GetValues(typeof(AdventurerGender));
          AdventurerGender randomGender = (AdventurerGender)valuesGender.GetValue(rand.Next(valuesGender.Length));
  
          Array valuesClass = Enum.GetValues(typeof(AdventurerClass));
          AdventurerClass randomClass = (AdventurerClass)valuesClass.GetValue(rand.Next(valuesClass.Length));
  
          string name = "Test " + AdventurerManager.AvaliableAdvList.Count.ToString();
  
          return new Adventurer();
      }
  </code></pre>
  
  <p>Here is my for loop:</p>
  
  <pre><code>        for (int i = 0; i &lt; 20; i++)
          {
              AdventurerManager.AvaliableAdvList.Add(AdventurerManager.createAdventurer());
          }
  </code></pre>
  
  <p>So my question is... in <code>createAdventurer</code> is it possible to assign values to a new instance of <code>Adventurer</code> without manually declaring it and without use of a constructor? Or would it be easier to just have a very long constructor somewhere down the road?</p>