If I define the type in C# as a public class instead of as a struct, I still get a compile error on the same line as before in VB6.  This time the error message is: “Only user-defined types defined in public object modules can be coerced to or from a variant or passed to late-bound functions”.

Cool.  Not.