如何使类使用特定方法
本文关键字:方法 何使类 | 更新日期: 2023-09-27 18:31:07
我正在努力改进编写代码的方式,这是我最近遇到的问题之一,它给了我相当大的头。
我正在使用NHibernate作为ORM。
在我的存储库中,我正在使用静态类(即。NHibernateHelperScheduler) 打开会话:
public class PlannedShiftsRepository : Repository<PlannedShiftsEvent>
{
///<summary>
///Get all records for provided machine_id
///</summary>
public IList<PlannedShiftsEvent> SelectForMachine(string machine_id)
{
using (ISession session = NHibernateHelperScheduler.OpenSession())
{
var myList = session.Query<PlannedShiftsEvent>().Where(c => c.machine_id == machine_id).ToList();
return myList;
}
}
}
问题是我有多个类 NHibernateHelper,它们对某些配置方面不同的数据库具有不同的配置。
public class NHibernateHelperScheduler
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
{
var NHibernateConfig = new Configuration();
NHibernateConfig.Configure(HttpContext.Current.Server.MapPath(
@"~'Models'NHibernate'hibernate.cfg.xml"), "Scheduler");
NHibernateConfig.AddDirectory(new System.IO.DirectoryInfo(HttpContext.Current.Server.MapPath(
@"~'Models'NHibernate'Mapping'Scheduler")));
_sessionFactory = NHibernateConfig.BuildSessionFactory();
}
return _sessionFactory;
}
}
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
}
这导致了一些问题,因为存储库可以使用不同的配置文件并且工作正常,没有人会注意到错误。对于不同的配置,存储库的结果将始终为 0。不会有任何错误。
现在我的问题是:
如何使存储库使用特定于 ony 的类。
例如,对于 obj 类型 PlannedShiftsEvent 仅使用静态类 NHibernateHelperScheduler 中的方法。这里应该通过接口使用某种合约吗?
干杯!
如果我正确理解你的问题,这听起来更像是一个设计问题。我建议研究一些 GOF 设计模式,例如桥和访客设计模式。我看到您已经在使用工厂模式的良好实现,所以也许您应该研究其他一些。