Export (0) Print
Expand All

Mark ComSource interfaces as IDispatch

TypeName

MarkComSourceInterfacesAsIDispatch

CheckId

CA1412

Category

Microsoft.Interoperability

Breaking Change

Breaking

ComSourceInterfacesAttribute is used to identify the event interfaces that a class exposes to COM clients. These interfaces must be exposed as InterfaceIsIDispatch to allow Visual Basic 6 COM clients to receive event notifications. By default, if an interface is not marked with the InterfaceTypeAttribute attribute, it is exposed as a dual interface.

To fix a violation of this rule add or modify the InterfaceTypeAttribute attribute so that its value is set to InterfaceIsIDispatch for all the interfaces specified with the ComSourceInterfacesAttribute attribute.

Do not exclude a warning from this rule.

The following example shows a class where one of the interfaces violates the rule.

using System;
using System.Runtime.InteropServices;

[assembly: ComVisible(true)]
namespace InteroperabilityLibrary
{
   // This violates the rule for type EventSource.
   [InterfaceType(ComInterfaceType.InterfaceIsDual)]
   public interface IEventsInterface
   {
      void EventOne();
      void EventTwo();
   }

   // This satisfies the rule.
   [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
   public interface IMoreEventsInterface
   {
      void EventThree();
      void EventFour();
   }

   [ComSourceInterfaces(
      "InteroperabilityLibrary.IEventsInterface\0" + 
      "InteroperabilityLibrary.IMoreEventsInterface")]
   public class EventSource
   {
      // Event and method declarations.
   }
}

Community Additions

ADD
Show:
© 2014 Microsoft