This has two problems: you cannot register your interface (tlb's can be registered) and it is editable(I like giving out tlb's, knowing that the interface won't be tampered with). Can you still use idl in C#? Can you import tlb's?
The .cs file is just the source like a .cpp file with VC++. You will compile your code into an assembly .dll. Under the .NET Framework there are no IDL files.
We register our COM components using a registry groups. This allows us to programmatically query the registry for a list of our company's servers. It is very important for us to be able to filter the registry contents in this way. I think I understand that the global assembly cache now replaces the registry, but I don't see a way to programattically search it, much less search it with a group filter.
All strongly named assemblies can be installed within the GAC (Global Assembly Cache). This would allow you to install (for example) 4 different versions of myCode.dll and they are all still accessable. I will have an article coming up soon explain more on this. You may be able to expose the meta data somehow, not sure right now.
We currently create our servers in the MTA for performance reasons, and because it's more deterministic. Is there a MTA\STA concept in .Net? Is there still a message pump?
There has been a lot of fuss of deterministic finalization, most people say that it no longer exists. The .NET Framework implements garbage collection so this is kind of a touchy subject. You can override the WndProc like this:
protected override void WndProc(ref System.Windows.Forms.Message m)
Hope this helps some.
May your glass be ever full.
May the roof over your head be always strong.
And may you be in heaven half an hour before the devil knows you’re dead. - Irish Blessing