Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 749831
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T14:28:50+00:00 2026-05-14T14:28:50+00:00

Up to now, I’ve always decorated my .NET classes that I want to use

  • 0

Up to now, I’ve always decorated my .NET classes that I want to use from VB6 with the [AutoDual] attribute. The point was to gain Intellisense on .NET objects in the VB6 environment. However, the other day I googled AutoDual and the first answer is ‘Do Not Use AutoDual’.

I’ve looked for coherent explanation of why I shouldn’t use it, but could not find it.

Can someone here explain it?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T14:28:50+00:00Added an answer on May 14, 2026 at 2:28 pm

    I think this sums it up:

    Types that use a dual interface allow
    clients to bind to a specific
    interface layout. Any changes in a
    future version to the layout of the
    type or any base types will break COM
    clients that bind to the interface. By
    default, if the
    ClassInterfaceAttribute attribute is
    not specified, a dispatch-only
    interface is used.

    http://msdn.microsoft.com/en-us/library/ms182205.aspx

    It increases the possibility that changing something in that class with the auto dual attribute will break someone else’s code when the class is changed. If gives the consumer the ability to do something that will quite possibly cause them issues in the future.

    The next option is ClassInterfaceType.AutoDual. This is the quick and dirty way to get early binding support as well (and make the methods show up in VB6 IntelliSense). But it’s also easy to break compatibility, by changing the order of methods or adding new overloads. Avoid using AutoDual.

    http://www.dotnetinterop.com/faq/?q=ClassInterface

    I finally found the link that talks about what is going on with AutoDual and how it works:

    http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/7fa723e4-f884-41dd-9405-1f68afc72597

    The warning against AutoDual isn’t the
    fact that dual interfaces is bad but
    the fact that it auto-generates the
    COM interface for you. That is bad.
    Each time the COM interface has to be
    regenerated you’ll get a new GUID and
    potentially new members. If the GUID
    changes then you get a brand new
    interface/class as far as COM is
    concerned. For early binding you’d
    have to rebuild the clients each time
    the interface was regenerated. The
    preferred approach is to define the
    COM class interface explicitly with a
    GUID. Then all the early binding
    clients can use the defined interface
    and not worry about it changing on
    them during development. That is why
    the recommended option is None to tell
    the CLR not to auto-generate it for
    you. You can still implement the dual
    interface though if you need it.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Now facebook require to have these options when you want to use bulit-in actions
Now that Windows RT has been jailbroken I want to port my VB app
Now I'm working with asp.net mvc, it's good framework. But, in future, I want
Now I am working with asp.net and C#. I use ActiveReports for reporting in
Now that I know C++ I want to get into desktop application that have
Now that .NET v3.5 SP1 has been released (along with VS2008 SP1), we now
now i'm working on a project for creating audio unit instrument that provide the
Now I try to developing an application related to Image processing, for that I
Now I'm trying to display the result of consuming a webservice from one page
Now that the new version of SignalR has done away with the IConnectionFactory interface,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.