CA1402: Vyhněte se přetížení ve viditelných rozhraních modelu COM

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

Příčina

Viditelné rozhraní modelu COM (Component Object Model) deklaruje přetížené metody.

Popis pravidla

Když jsou přetížené metody vystaveny klientům modulu COM, zachová svůj název pouze první přetížení metody. Následná přetížení jsou jedinečně přejmenována připojením k názvu podtržítka "_" a celé číslo, které odpovídá pořadí deklarace přetížení. Představte si například následující metody:

void SomeMethod(int valueOne);
void SomeMethod(int valueOne, int valueTwo, int valueThree);
void SomeMethod(int valueOne, int valueTwo);

Tyto metody jsou zpřístupněny klientům modelu COM následujícím způsobem.

void SomeMethod(int valueOne);
void SomeMethod_2(int valueOne, int valueTwo, int valueThree);
void SomeMethod_3(int valueOne, int valueTwo);

Klienti modelu COM jazyka Visual Basic 6 nemohou implementovat metody rozhraní pomocí podtržítka v názvu.

Jak opravit porušení

Chcete-li opravit porušení tohoto pravidla, přejmenujte přetížené metody tak, aby názvy byly jedinečné. Případně můžete rozhraní neviditelné pro com změnou přístupnosti (internalFriendv jazyce Visual Basic) nebo použitím atributu nastaveného System.Runtime.InteropServices.ComVisibleAttribute na false.

Kdy potlačit upozornění

Nepotlačujte upozornění na toto pravidlo.

Příklad

Následující příklad ukazuje rozhraní, které porušuje pravidlo a rozhraní, které pravidlo splňuje.

using System;
using System.Runtime.InteropServices;

[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
   // This interface violates the rule.
   [ComVisible(true)]
   public interface IOverloadedInterface
   {
      void SomeMethod(int valueOne);
      void SomeMethod(int valueOne, int valueTwo);
   }

   // This interface satisfies the rule.
   [ComVisible(true)]
   public interface INotOverloadedInterface
   {
      void SomeMethod(int valueOne);
      void AnotherMethod(int valueOne, int valueTwo);
   }
}

CA1413: Vyhněte se neveřejným polím v hodnotách viditelných modulem COM

CA1407: Vyhněte se statickým členům ve viditelných typech modelu COM

CA1017: Označte sestavení pomocí atributu ComVisibleAttribute

Viz také