Après this article, j'ai réussi à traduire classe C++ COM/déclaration d'interface en C# comme ceci:interface COM Interop coulée
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid(IfaceGuid)]
public interface IFoo
{
void Bar();
}
[ComImport, Guid(ClassGuid)]
public class Foo
{ }
je l'utilise comme ceci:
var foo = new Foo();
var ifoo = (IFoo)foo;
ifoo.Bar();
Ma question est, comment cela peut-il fonctionner, étant donné que Foo
n'implémente pas IFoo
(même à l'exécution, typeof(Foo).GetInterfaces()
est vide) et que les conversions définies par l'utilisateur vers des interfaces sont interdites?
Est-ce un traitement spécial réservé à COM? Qu'est-ce que la spécification C# a à dire à ce sujet?