Hugo ya te ha dado un buen ejemplo. Lo que debes considerar es de restringir el acceso a propiedades y métodos internos que no quieres que otros programadores usen directamente. Eso lo consigues con declaraciones de protección (PROTECTED|HIDDEN) y usando una clase base liviana, que no exponga mas propiedades (visibles en Intellisense a traves de COM) que las que necesites.
Para otro buen ejemplo puedes ver:
http://fox.wikis.com/wc.dll?Wiki~COMComponentExample