I have read quite a few different approaches on how to expose a .NET assembly to a COM application and I am trying to determine which is the best approach.

I have seen this approach:

vb.net Code:
  1. <Microsoft.VisualBasic.ComClass(Foo.ClassId, Foo.InterfaceId, Foo.EventsId)> Public Class Foo
  2.  
  3. Public Const ClassId As String = GUID
  4. Public Const InterfaceId As String = GUID
  5. Public Const EventsId As String = GUID

I have also read the approach that involves creating an interface as seen here. Although this method is way more involved as implementing all the members could take quite a bit of time.

What's the best practice here?