What I did in the past when it came to expose C# classes to COM was to create another class that defined the 'interface' to the COM world and internally it would delegate its calls to the real C# class.
That way you can keep your overloads and you don't need to sacrifice your conventions solely to get your class exposed into the COM world in a (VB6) friendly way. HTH // Ryan Heath On Mon, Aug 25, 2008 at 1:14 PM, Vicke Lööd <[EMAIL PROTECTED]> wrote: > I've played around a bit, and the *only* way I've made this happen is > to not use method overloading, but change them all into a single > method like this: > > public void Method(string S, [Optional]string T) > > Is this really the only way to do it? It means I have to collapse all > public overloaded methods into single methods using the > OptionalAttribute on every parameter. > > On Mon, Aug 25, 2008 at 9:05 AM, Vicke Lööd <[EMAIL PROTECTED]> wrote: >> In my C# class library, I have these ComVisible method overloads: >> >> public void Method(string S) >> public void Method(string S, string T) >> >> If I set the ClassInterfaceType to AutoDual, these appear in VB6 >> intellisense like this: >> >> Method_1(string S) >> Method_2(string S, string T) >> >> However, I would like them to appear like this in VB6, with optional >> parameters: >> >> Method(string S[, string T]) >> >> How can I make this happen? Do I have to set the ClassInterfaceType to >> None and put some attributes on the overloads? Which? Would the >> OptionalAttribute help at all? >> >> I know this is possible to achieve because COM DLLs generated by >> "Microsoft SDK for Java 4.0" (on the Java version of the same source >> code) turns overloaded Java methods into COM/VB6 methods with optional >> parameters. >> >> Also, less importantly, I have a public ComVisible field in my C# class >> library: >> >> public const string S = "S"; >> >> Again, if I set the ClassInterfaceType to AutoDual, this field does >> not appear in the VB6 intellisense. What do I have to do to make this >> happen? Do I have to convert the field to a property? Or can I put >> some attributes on the field? Again, "Microsoft SDK for Java 4.0" >> turned this into what looks like a public field in VB6. (Looking at >> the exported TLB for the Java DLL, it looks like a property, but I'm >> no COM expert.) >> >> I've look at all MSDN documentation, but I can't find the answers to >> these questions. >> > > =================================== > This list is hosted by DevelopMentor(R) http://www.develop.com > > View archives and manage your subscription(s) at http://discuss.develop.com > =================================== This list is hosted by DevelopMentor® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com