System.ComponentModel.LicenseProviderAttribute e COM Interop

Se scrivete controlli windows forms vi sarà probabilmente capitato di volerli proteggere da utilizzi inautorizzati e quindi immagino vi sarete creati una libreria in cui definite un LicenseProvider ereditato da System.ComponentModel.LicenseProvider. Per poi assegnare il custom LicenseProvider al vostro controllo avrete usato System.ComponentModel.LicenseProviderAttribute. Bene, tutto fila liscio finché non vi verrà in mente di esporre il vostro controllo a dei client COM.
Purtroppo l'assembly con il vostro LicenseProvider non verrà più caricato da System.ComponentModel.LicenseManager. Giustamente, il caricamento di un assembly per la licenza NON é customizzabile tramite AppDomain.AssemblyResolve (la verifica della licenza avviene in un altro appDomain??), quindi, IMHO, non rimane altro che ricorrere ad uno "sporco trucco".

Ereditate il vostro custom LicenseProvider in una classe dello stesso assembly che richiede la licenza. In questa maniera:
Friend Class LicenseProvider
  Inherits MyAssembly.LicenseProvider
End Class
ed ovviamente impostate l'attributo
System.ComponentModel.LicenseProviderAttribute
al LicenseProvider locale.

Se qualcuno ha idee migliori da proporre si faccia avanti please...

Print | posted on lunedì 6 giugno 2005 15:57

Comments have been closed on this topic.