ExportFactory for Desktop Applications

ExportFactory<T> è molto simile alla classe Lazy<T>, cambiano solo due cosucce:

  1.  Quando accediamo alla proprietà Value di Lazy<T> l’istanza dell’oggetto che ci viene ritornato è sempre la stessa, per cui l’oggeto viene creata una sola volta. ExportFactory<T> al posto della proprietà Value ci mette a disposizione il metodo CreateExport() che ci ritorna ogni volta una nuova istanza.
  2. ExportFactory<T> è disponibile solo per Silverlight :)

E se lo volessimo usare in una Desktop Application?
E’ possibile scaricare MEF 2 Preview 1 da codeplex ed usare ExportFactory<T> tranquillamente nelle nostre applicazioni Desktop.

Una volta referenziato l’assembly System.ComponentModel.Composition.Codeplex.dll potete importare i vostri plugin usando ExportFactory<T> esattamente come Lazy<T>


Però, per accedere al plugin, non si userà più la proprietà Value come con Lazy<T> ma bensì il metodo CreateExport() che ritorna un ExportLifetimeContext<T> e tramite la proprietà Value possiamo accedere all’istanza del plugin. ExportLifetimeContext<T> inoltre implementa l’interfaccia IDisposable così da poter rilasciare la memoria quando la composable part (il nostro plugin) non ci serve più.

Come possiamo vedere i due Object ID sono differenti per cui le due istanze create da CreateExport() sono diverse!



posted @ lunedì 4 ottobre 2010 16:42

Print
Comments have been closed on this topic.