title: How to ensure that new instance of class can be created only by other class?
body: <p>I know that title is little bit to long, so here is my problem .
  I've got this class for example:</p>
  
  <pre><code>public  class Connection
  {
       public static Connection Create()
       {
            return new Connection();
       }            
  }
  </code></pre>
  
  <p>I need to ensure that new instances of Connection can be created only by other classes , calling the Create method.The solution must allow classes to inherit from Connection.</p>
  
  <p>Some of the answers I've found is to make class <code>abstract</code> or <code>static</code> but as I remember, you can't make instance of abstract or static class nor inherit from static.</p>
  
  <p>The other two offered answers is to make <code>private</code> or <code>protected</code> constructor of Connection class.Well, if constructor is set on private , we can't call him from derived class , but if it is protected, we can . </p>
  
  <p>So , my idea is to make constructor <code>protected</code>.Am i right ?Because I found that someone posted making Connection class static is right answer, and that doesn't make any sense .</p>