2009-10-23 7 views
2

Est-il possible de construire quelque chose qui fonctionne comme un ISubDependencyResolver mais qui supporte aussi Release (...)?Castle IoC - ISubDependencyResolver qui prend en charge la libération (...)?

J'ai une situation où je veux être en mesure de résoudre une classe dérivée de fruits dans le constructeur d'un Blender:

abstract class Fruit 
{ 
} 

class AppleBlender 
{ 
    AppleBlender(Apple a) 
    { 
    } 
} 

Apple est malheureusement dans une autre assemblée que je ne veux pas charger jusqu'à ce que nécessaire, car il y a des centaines de différents types de fruits tous avec leur propre assemblage.

ISubDependencyResolver fonctionne très bien, sauf que certains de mes fruits sont jetables, j'ai donc besoin d'un moyen pour qu'ils soient libérés.

Dérive de DefaultDependencyResolver le seul moyen d'y parvenir?

EDIT: Exemple plus complet. Fondamentalement, je veux un moyen de traiter le "nouveau Apple()" comme un objet transitoire qui doit être éliminé. Je suis complètement heureux de prendre une piste entièrement différente sur celui-ci, mais le type "Apple" doit être chargé au moment de la résolution (pas le temps de démarrage).

+0

Ne serait-il travailler hors de la boîte? MicroKernel a l'interface IReleasePolicy qui fait exactement cela, et dispose de vos dépendances une fois que vous avez libéré votre composant. Pouvez-vous poster un échantillon plus complet? Je ne comprends pas vraiment votre scénario ici ... –

+0

Ok, je vais rassembler un échantillon plus complet, il faudra peut-être attendre jusqu'à lundi. Il semble juste que parce qu'Apple est renvoyé par le résolveur de sous-dépendance, il n'est pas éliminé. –

+0

Rendez-vous avant lundi :) –

Répondre

2

Windsor 2.5 prend en charge ce OOTB pour les composants enregistrés via UsingFactoryMethod (ou plus d'une manière générale pour les composants qui ont le type de mise en œuvre mis à LateBoundComponent)

Questions connexes