Actually, that is the problem with MS as well I think. They believe COM can fix use cases where you need this kind of interop when it clearly can't. Maybe this is why they don't bother fixing the last bit in the C# compiler and adding an attribute like DllExport to make it work without requiring COM.