Ho 2 gruppi:MEF (Managed Extensibility Framework) esegue la digitazione "duck"?
di montaggio 1:
interface IWeapon {
int Might { get; }
}
[Export("sword")]
public class Sword : IWeapon {
public int Might {
get { return 10; }
}
}
Assemblea 2:
interface IWeapon {
int Might { get; }
}
var catalog = new AssemblyCatalog(typeof(Ninja.Sword).Assembly);
var container = new CompositionContainer(catalog);
// not allowed to use the IWeapon def in assembly 2
var sword = container.GetExportedValue<IWeapon>("sword");
io so come farlo funzionare. Posso chiedere al MEF (Managed Extensibility Framework) per l'oggetto, o farlo esportare l'IWeapon corretto invece che solo l'oggetto per nome.
MEF può digitare "duck" per me e restituire un oggetto proxy se tutti i punti di interfaccia sono implementati?
Il problema che vedo è versioning, se il gruppo base cambia versioni, tutte le estensioni possono avere bisogno di ricompilazione. –
Risolvo il problema spostando l'interfaccia in un assembly separato. La versione di quell'assembly dovrebbe cambiare solo se il contratto effettivo cambia. –
Sì, ho pensato a questo, è ancora un po 'fastidioso perché ora dovrò tenere traccia di 2 diversi gruppi (distribuire 2 assiemi, ecc.), Immagino sia il modo corretto di fare le cose con .Net –