Ich binden eine Komponente in die IWindsorContainer registrieren dhHinzufügen zusätzlicher Abhängigkeit Schloss Windsor mit
_container.Register(Component.For<IView>().ImplementedBy<View>());
_container.Register(Component.For<Presenter>());
Wenn ich die i auch wollen Ansicht lösen, um die Presenter erstellen möchten, so dass ich auf alle Ereignisse abonnieren können, dass werden von der Ansicht generiert. Kann dies während des Registrierungsprozesses erreicht werden oder brauche ich irgendeine Art von Einrichtung?
public interface IView
{
event Action<string> Process;
}
public class View : IView
{
public event Action<string> Process;
}
public class Presenter
{
public Presenter(IView view)
{
view.Process += (args) => this.DoSomeStuff();
}
}
Ich habe eine eigene Registrierung geschrieben, aber es funktioniert nicht wie erwartet
public class ViewRegistration<TView> : IRegistration where TView : IView
{
private Type _implementation, _presenter;
public ViewRegistration<TView> ImplementedBy<TImplementation>() where TImplementation : TView
{
_implementation = typeof(TImplementation);
return this;
}
public ViewRegistration<TView> Using<TPresenter>()
{
_presenter = typeof(TPresenter);
return this;
}
public void Register(IKernel kernel)
{
var model = kernel.ComponentModelBuilder.BuildModel(_implementation.FullName, typeof(TView), _implementation, null);
if (_presenter != null)
{
var test = kernel.ComponentModelBuilder.BuildModel(_presenter.FullName, _presenter, _presenter, null);
model.AddDependent(test);
}
kernel.AddCustomComponent(model);
}
}
cross-gepostet: http://groups.google.com/group/castle-project-users/browse_thread/thread/f0c8733f07a6a005 –