DaoとIoCという新しいパターンを試してみるサンプルプロジェクトを作成しました。Castle.Windsorとデータアクセスオブジェクトwebforms asp.net
マイダオは、次のように定義されています。私は、引数としてIDao<MyClass> myClass
を受け入れるコンストラクタを持つコントローラを定義することができますMVCパターンを使用して
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"));
}
}
:
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);
}
...
}
をそして、私は、対応するインストーラを持っていますWindsorは私のために正しいSessionFactoryでDaoをインスタンス化するすべての魔法を実行します。私の質問は、非MVC環境で同じ振る舞いを達成するにはどうすればいいですか?どの特定のページでも、どのようにmyClassのインスタンスを取得できますか?
[この回答](http://stackoverflow.com/questions/293790/how-to-use-castle-windsor-with-asp-net-web-forms)が役立つことがあります。 –