1
當_fwf.GetFileWatcher被調用時,總是MailWatcher正在返回。我怎樣才能返回類型工廠設施的FileWatcher類?我嘗試了下面的代碼塊,但這總是第一個組件。Castle Windsor Typed Factory Facility
另外我試過DefaultTypedFactoryComponentSelector,但我無法得到結果。
public interface IWatcher : IDisposable
{
void StartWatching();
}
public class MailWatcher : IWatcher
{
public void StartWatching()
{
Console.WriteLine("Mail watcher");
}
public void Dispose()
{
throw new NotImplementedException();
}
}
public class FileWatcher : IWatcher
{
public void StartWatching()
{
Console.WriteLine("File watcher");
}
public void Dispose()
{
throw new NotImplementedException();
}
}
public interface IFileWatcherFactory : IDisposable
{
IWatcher GetWatcher(string path);
void Destroy(IWatcher fw);
}
public class Bootstrapper
{
private static WindsorContainer _container;
private static IFileWatcherFactory _fwf;
public static void Initialize()
{
_container = new WindsorContainer();
_container.AddFacility<TypedFactoryFacility>();
_container.Register(Component.For<IWatcher>().ImplementedBy<MailWatcher>().LifeStyle.Transient);
_container.Register(Component.For<IWatcher>().ImplementedBy<FileWatcher>().LifeStyle.Transient);
_container.Register(Component.For<IFileWatcherFactory>().AsFactory(x => x.SelectedWith(new FileWatcherSelector())));
_fwf = _container.Resolve<IFileWatcherFactory>();
strong textvar fw = _fwf.GetFileWatcher("file", 20);
fw.StartWatching();
}
}
什麼FileWatcherSelector看起來不一樣? – 2012-01-04 13:54:47
我有點困惑......爲了調用GetFileWatcher(「file」,20),你的IFileWatcherFactory應該包含方法/簽名和nameconvetion將解決/創建FileWatcher的一個實例,該實例應該有自己的2個參數構造函數。我想你在FileWatcherSelector中做了一些錯誤的魔術。 – Crixo 2012-01-04 14:58:22