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 (internal
Friend
v 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);
}
}
Související pravidla
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é
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro