J'ai un composant COM VC++ avec une bibliothèque de types. La bibliothèque de type de ce composant déclare une interface et une co-classe:Les noms dans l'assembly interop ont une mauvaise capitalisation
[
object,
uuid(ActualUuidHere),
dual,
nonextensible,
oleautomation,
hidden,
helpstring(ActualHelpStringHere)
]
interface IWorkflow : IDispatch
{
//irrelevant properties here
}
[
uuid(ActualClassIdHere),
noncreatable
]
coclass Workflow {
[default] interface IWorkflow;
};
Pour consommer le composant à partir d'une application C# ajouter une référence au projet C# et un ensemble interop est généré.
Dans l'Explorateur d'objets de Visual Studio 2003, je vois que le Interop contient:
public abstract interface IWorkflow;
public abstract interface workflow : IWorkflow;
public class workflowClass : System.Object;
Il est clair que cela pour une raison quelconque le nom de la classe et l'interface diffèrent en majuscules. Cela ne se produit pas pour les autres interfaces 20+ déclarées dans la même bibliothèque de type - pour eux ISomething
correspond à Something
et SomethingClass
.
J'ai parcouru les fichiers .idl du projet - l'identifiant Workflow
n'est utilisé nulle part ailleurs.
Quelle est la raison de ce comportement étrange et comment peut-on le contourner?
A parcouru tous les fichiers IDL du projet - le nom n'est utilisé nulle part ailleurs. – sharptooth
Merci. J'avais ce problème, et votre solution l'a corrigé. – Grokys