title: Make class invisible outside of assembly
body: <p>Lets say I have class Dog:</p>
  
  <pre><code>public class Dog {
      public String Breed { get; set; }
      public String Color { get; set; }
      ...
  }
  </code></pre>
  
  <p>And a class Animal:</p>
  
  <pre><code>public class Animals {
      public Dog[] Dogs { get; set; }
  
      public Dog[] GetDogs() {
          ...
          return Dogs;
      }
      ...
  }
  </code></pre>
  
  <p>The above to classes are in my class library and I added it as reference to my project.. Everything works fine but what I want is whoever uses this library should not be able to use class <code>Dog</code>, I mean he should not be able to do something like <code>Dog dog = new Dog();</code>. I tried to make it <strong>internal</strong>, but then, I must also write <strong>internal</strong> in <code>Animals</code> class and if I do this I can't use the GetDogs() method.</p>
  
  <p>Any suggestions?</p>