Wondering when you are going to re-assign a COM object, should you first dispose of the COM object?
public class DisposeTest : IDisposable
{
    public MyCOMObject MyObject { get; internal set; }
    public void ReAssign()
    {
        //Re-assign to new COM object
        MyObject = GetNewCOMObject();
    }
    public void Dispose()
    {
        if (MyObject != null)
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(MyObject);
        }
    }
}
If you call ReAssign() multiple times it will create new instances of the MyCOMObject.
What I am not sure about is, should you first release the current MyObject before assigning a new value?
e.g. something like
public void ReAssign()
{
    //Release current object
    if (MyObject != null)
    {
        System.Runtime.InteropServices.Marshal.ReleaseComObject(MyObject);
    }
    //Re-assign to new COM object
    MyObject = GetNewCOMObject();
}
