title: Simplify Constructor for class with multiple initialisable fields
body: <p>I currently have the following problem:<br>
  I have a class which includes 3 different fields</p>
  
  <ul>
  <li>Enum x </li>
  <li>ActiveDirectoryUser y </li>
  <li>CustomClass z</li>
  </ul>
  
  <p>The enum can be initialised by passing a string or the enum object.
  The ADUser can be initialised by passing a string (LoginName) or the user by itself and the CustomClass can be initialized by passing a string, int or the object.</p>
  
  <p>Now I want to initialize the class to pass all different combinations like</p>
  
  <pre><code>class(string enumValue, string adUser, string customClass) 
  class(string enumValue, ADUser adUser, CustomClass customClass)
  class(EnumValue enumValue, string adUser, CustomClass customClass)
  </code></pre>
  
  <p>Is there a way to simplify the constructors without typing all of the 12 possibilities (Enum-2 * ADUser-2 * CClass-3 = 12)?</p>
  
  <p>I thought about chained constructors where i also ended up with 12 constructors but also thought about just passing the c# Object on each parameter and cast it and do stuff with it but i think that is just a dirty workaround?</p>
  
  <h1>Edit</h1>
  
  <p>The class is contained in an library and so can be used internal but also public. For the internal uses there is no problem to pass a concrete version of an object.
  But if i use it public in other solutions these solutions can only refer to string or int values. So the class should be able to 'take' the values and convert them while beeing initialised because it have access to all the real objects.<br>
  Maybe this clarifies the problem a bit.</p>
  
  <p>Here some code snippets with changed names:</p>
  
  <pre><code>#region Content of libraryOne
  
  public class ClassName
  {
      internal EnumValueWrapper { get; set; }
      internal CustomClass { get; set; }
      internal ADUser { get; set; }
  
      public ClassName() { ... } //Now via Builder Pattern
      internal ClassName() { ... } //With Parameters for internal initialisations
  
      public InformationContainer GetContentInfo()
      {
          //[...]Process Stuff and Return Container
      }
  }
  
  internal CustomClass { ... }
  internal EnumValueWrapper { ... }
  internal ADUser { ... }
  
  #endregion Content of libraryOne
  </code></pre>