Ho un componente COM VC++ con una libreria di tipi. La libreria dei tipi di questo componente dichiara un'interfaccia e un co-classe:I nomi nell'assembly di interoperabilità hanno una maiuscola errata
[
object,
uuid(ActualUuidHere),
dual,
nonextensible,
oleautomation,
hidden,
helpstring(ActualHelpStringHere)
]
interface IWorkflow : IDispatch
{
//irrelevant properties here
}
[
uuid(ActualClassIdHere),
noncreatable
]
coclass Workflow {
[default] interface IWorkflow;
};
Al fine di consumare la componente da un'applicazione C# aggiungo un riferimento al progetto C# e un assembly di interoperabilità viene generato.
Nel Visualizzatore oggetti di Visual Studio 2003 Vedo che l'interoperabilità contiene:
public abstract interface IWorkflow;
public abstract interface workflow : IWorkflow;
public class workflowClass : System.Object;
E 'chiaro che che per qualche motivo il nome della classe e l'interfaccia si differenziano per capitalizzazione. Ciò non accade per altre 20 interfacce dichiarate nella stessa libreria di tipi - per loro ISomething
corrisponde a Something
e SomethingClass
.
Ho esaminato i file .idl del progetto: l'identificatore Workflow
non viene utilizzato da nessun'altra parte.
Qual è il motivo di questo strano comportamento e come può essere risolto?
Esaminato tutti i file IDL nel progetto, il nome non viene utilizzato da nessun'altra parte. – sharptooth
Grazie. Stavo avendo questo problema e la tua soluzione l'ha risolto. – Grokys