La mise en œuvre d'une interface déclarée en C# à partir de C++/CLI
Dire que j'ai un C# interface appelée IMyInterface
définis comme suit:
//C# code
public interface IMyInterface
{
void Foo(string value);
string MyProperty { get; }
}
Assumer j'ai aussi un C++/CLI classe, MyConcreteClass
, qui implémente cette interface et dont la tête est déclarée comme suit:
//C++/CLI header file
ref class MyConcreteClass : IMyInterface
{
public:
};
Comment mettre en œuvre la méthode Foo
et la propriété MyProperty
dans le C++/CLI-tête?
Ma tentative résultats dans l'erreur de compilation suivante:
erreur C3766: 'MyConcreteClass" doit
fournir une implémentation pour la
la méthode de l'interface " void
IMyInterface::Foo(System::String^
valeur)'
Vous devez vous connecter pour publier un commentaire.
Interfaces doivent être définies en tant que virtuel. Notez aussi le "public IMy.." après la classe decleration, c'est un peu différente de la syntaxe de C#.
Si vous le pouvez, sceller les membres d'interface pour améliorer les performances, le compilateur sera en mesure de lier ces méthodes plus étroitement que ne le sont habituellement les membres virtuels.
Espère que ça aide 😉
Je n'ai pas le compiler, mais semble bon pour moi... Oh, et aussi, la définition de vos méthodes __clrcall élimine les dangers de la double thunk performances.
modifier
la syntaxe correcte pour une propriété est:
ou, lors de la mise à la définition dans le fichier source:
sealed
est nécessaire seulement pour la syntaxe, ou est-il?