CA1408: Nepoužívejte AutoDual ClassInterfaceType
Zboží | Hodnota |
---|---|
RuleId | CA1408 |
Kategorie | Microsoft.Interoperability |
Změna způsobující chybu | Narušující |
Příčina
Viditelný typ modelu COM (Component Object Model) je označen atributem ClassInterfaceAttribute nastaveným AutoDual
na hodnotu ClassInterfaceType.
Popis pravidla
Typy, které používají duální rozhraní, umožňují klientům navázat se na určité rozložení rozhraní. Změny v budoucí verzi rozložení typu nebo jakéhokoli základního typu přeruší klienty modulu COM, kteří jsou navázáni na toto rozhraní. Pokud atribut není zadaný, ClassInterfaceAttribute použije se ve výchozím nastavení rozhraní pouze pro odeslání.
Pokud není označeno jinak, všechny veřejné negenerické typy jsou viditelné pro com; Všechny nepublikované a obecné typy jsou pro com neviditelné.
Jak opravit porušení
Chcete-li opravit porušení tohoto pravidla, změňte hodnotu ClassInterfaceAttribute atributu None
na hodnotu ClassInterfaceType a explicitně definujte rozhraní.
Kdy potlačit upozornění
Nepotlačujte upozornění z tohoto pravidla, pokud není jisté, že rozložení typu a jeho základních typů se v budoucí verzi nezmění.
Příklad
Následující příklad ukazuje třídu, která porušuje pravidlo a opětovnou deklaraci třídy pro použití explicitního rozhraní.
using System;
using System.Runtime.InteropServices;
[assembly: ComVisible(true)]
namespace InteroperabilityLibrary
{
// This violates the rule.
[ClassInterface(ClassInterfaceType.AutoDual)]
public class DualInterface
{
public void SomeMethod() {}
}
public interface IExplicitInterface
{
void SomeMethod();
}
[ClassInterface(ClassInterfaceType.None)]
public class ExplicitInterface : IExplicitInterface
{
public void SomeMethod() {}
}
}
Související pravidla
CA1403: Typy automatického rozložení by neměly být viditelné modelu COM
CA1412: Označte rozhraní ComSource jako IDispatch
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