我已經創建了一個示例項目,嘗試一些新的模式,即Dao和IoC。Castle.Windsor和Webforms的數據訪問對象asp.net
吾道定義如下:
public class Dao<T> : IDao<T>
{
protected NHibernate.ISessionFactory _sessionFactory;
public Dao(NHibernate.ISessionFactory sessionFactory)
{
this._sessionFactory = sessionFactory;
}
protected NHibernate.ISession Session
{
get { return _sessionFactory.GetCurrentSession(); }
}
public T GetById(object id)
{
return Session.Get<T>(id);
}
...
}
而且我有一個相應的安裝程序:
public class DaoInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Component.For(typeof(Data.IDao<>))
.ImplementedBy(typeof(Data.Dao<>))
.ServiceOverrides(ServiceOverride.ForKey("SessionFactory").Eq("FirstSessionFactory"))
.Named("FirstDao"));
}
}
使用MVC模式我可以定義構造函數控制器將接受IDao<MyClass> myClass
作爲參數Windsor將爲我使用正確的SessionFactory來完成實例化Dao的所有魔術。我的問題是,我如何在非MVC環境中實現相同的行爲?那麼在任何特定的頁面上,我如何獲得myClass的實例?
你可能會發現[這個答案](http://stackoverflow.com/questions/293790/how-to-use-castle-windsor-with-asp-net-web-forms)有用。 –