How to use a class as the base, but hide the class type publically?
<p>I am currently just exposing the properties through a generic interface e.g.</p>

<pre><code>public interface IBaseClass
{
    int ID { get; set; }
}

internal class MyBaseClass : IBaseClass
{
    public MyBaseClass() { }
    public int ID { get; set; }
}

public class MyExposedClass : IBaseClass
{
    private MyBaseClass _base = new MyBaseClass();

    public int ID
    {
        get { return _base.ID; }
        set { _base.ID = value; }
    }
}
</code></pre>

<p>Then in my main application I can do:</p>

<pre><code>IBaseClass c = new MyExposedClass();
c.ID = 12345;
</code></pre>

<p>But can't do:</p>

<pre><code>MyBaseClass b = new MyBaseClass();
</code></pre>

<p>This is my desired behaviour. </p>

<p>However, I was just wondering if this is the correct approach? Or if there was a better way?</p>
