我对NHibernate非常新(即一小时左右)。我按照教程给了我以下课程:
public class ContactNHibernateHelper
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
{
var configuration = new Configuration();
configuration.Configure();
configuration.AddAssembly(typeof (CRMData.Objects.Contact).Assembly);
_sessionFactory = configuration.Configure().BuildSessionFactory();
}
return _sessionFactory;
}
}
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
}
在扩展我的应用程序时,我现在有另一个类用于不同的对象。我正在尝试重写上面的类,以便我可以将程序集类型作为参数传递并返回_sessionFactory。因此,例如,我将一个变量传递给名为assembly的方法。那么代码就是:
public class GenericNHibernateHelper
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory(System.Reflection.Assembly assembly)
{
get
{
if (_sessionFactory == null)
{
var configuration = new Configuration();
configuration.Configure();
configuration.AddAssembly(assembly);
_sessionFactory = configuration.Configure().BuildSessionFactory();
}
return _sessionFactory;
}
}
}
这是错误'无法解析符号'get'' - 大概是因为我不能以这种方式传递任何参数。
我可能遗漏了一些非常简单的东西 - 任何想法?
答案 0 :(得分:1)
如果您的其他类与CRMData.Objects.Contact在同一个程序集中,则无需进行任何更改。
但是如果要传递参数,则需要将SessionFactory属性转换为方法或创建接受参数的构造函数。
private static ISessionFactory SessionFactory(System.Reflection.Assembly assembly)
{
if (_sessionFactory == null)
{
var configuration = new Configuration();
configuration.Configure();
configuration.AddAssembly(assembly);
_sessionFactory = configuration.Configure().BuildSessionFactory();
}
return _sessionFactory;
}
答案 1 :(得分:0)
我们在C#中没有索引器以外的参数属性。这就是你得到错误的原因。改变你的代码以使用方法。
但是我仍然不明白你为什么需要将程序集传递给方法。