CA1412: Označte rozhraní ComSource jako IDispatch

Zboží Hodnota
RuleId CA1412
Kategorie Microsoft.Interoperability
Změna způsobující chybu Narušující

Příčina

Typ je označen atributem ComSourceInterfacesAttribute a nejméně jedno zadané rozhraní není označeno atributem InterfaceTypeAttribute nastaveným InterfaceIsDispatch na hodnotu.

Popis pravidla

ComSourceInterfacesAttribute slouží k identifikaci rozhraní událostí, která třída zveřejňuje klientům modelu COM (Component Object Model). Tato rozhraní musí být zpřístupněna, aby InterfaceIsIDispatch klienti modelu COM jazyka Visual Basic 6 dostávali oznámení o událostech. Pokud rozhraní není označeno atributem InterfaceTypeAttribute , je ve výchozím nastavení vystaveno jako duální rozhraní.

Jak opravit porušení

Chcete-li opravit porušení tohoto pravidla, přidejte nebo upravte InterfaceTypeAttribute atribut tak, aby jeho hodnota byla nastavena na InterfaceIsIDispatch pro všechna rozhraní, která jsou zadána s atributem ComSourceInterfacesAttribute .

Kdy potlačit upozornění

Nepotlačujte upozornění na toto pravidlo.

Příklad

Následující příklad ukazuje třídu, kde jedno z rozhraní porušuje pravidlo.

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.
   }
}

CA1408: Nepoužívejte AutoDual ClassInterfaceType

Viz také