title: Why are field initializers of a derived class are executed before base classes's initializers
body: <p>constructors are executed in the order from top to bottom I.E. base's first followed by derived one. This arangement is based on an important OOP assurance that an object (base here) must always be initialized before it can be used (here in derived class's constructor).</p>
  
  <p>I'm wondering why field-initializers do not follow this principle in C#? Am I missing something here?</p>
  
  <p>I've come across a usefulness of this principle with field-initializers as well. I have a base class with a property returning Identity object. Every derived class has its own repository field which I have been initializing using field-initializer (using default constructor). Recently I've decided that the repository class must also be provided with Identity object so I introduced an extra argument in the repository constructor. But I'm stuck to find out:</p>
  
  <pre><code>public class ForumController : AppControllerBase
  {
          ForumRepository repository = new ForumRepository(Identity);
      // Above won't compile since Identity is in the base class.
  
     // ... Action methods.
  }
  </code></pre>
  
  <p>Now I'm left with only one option that is to plump my every controller with a default constructor for only to do the job of initializing of repository object with Identity. </p>