Utilizzo di tipi COM (interoperabilità) nei pacchetti di Dynamo
Alcune informazioni generali sui tipi di interoperabilità
Cosa sono i tipi COM? - https://learn.microsoft.com/it-it/windows/win32/com/the-component-object-model
Il modo standard per utilizzare i tipi COM in C# consiste nel fare riferimento agli assiemi di interoperabilità primari (in pratica una grande raccolta di API) con il pacchetto.
Un'alternativa a questa operazione consiste nell'incorporare i PIA (assiemi di interoperabilità primari) nell'assieme gestito. Ciò include sostanzialmente solo i tipi e i membri che sono effettivamente utilizzati da un assieme gestito. Tuttavia, questo approccio presenta altri problemi, come l'equivalenza dei tipi.
In questo post è descritto abbastanza bene il problema:
In che modo Dynamo gestisce l'equivalenza dei tipi
Dynamo delega l'equivalenza dei tipi al runtime .NET (dotnet). Ad esempio, 2 tipi con lo stesso nome e lo stesso spazio dei nomi, provenienti da assiemi diversi, non saranno considerati equivalenti e in Dynamo verrà visualizzato un errore durante il caricamento degli assiemi in conflitto. Per quanto riguarda i tipi di interoperabilità, Dynamo consentirà di verificare se i tipi di interoperabilità sono equivalenti utilizzando l'API IsEquivalentTo.
Come evitare conflitti tra tipi di interoperabilità incorporati
Alcuni pacchetti sono già stati creati con tipi di interoperabilità incorporati (ad esempio CivilConnection). Il caricamento di 2 pacchetti con assiemi di interoperabilità incorporati che non sono considerati equivalenti (versioni diverse come definito qui) causerà package load error
. Per questo motivo, è consigliabile che gli autori dei pacchetti utilizzino l'associazione dinamica (nota anche come associazione tardiva) per i tipi di interoperabilità (la soluzione è descritta anche qui).
È possibile seguire questo esempio:
Last updated