Могу ли я передать параметр в ISessionFactory в NHibernate? - PullRequest
0 голосов
/ 22 августа 2011

Я очень новичок (т. Е. Час или около того) в 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.Так, например, я бы передал переменную методу сборка.Тогда код будет выглядеть следующим образом:

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;
        }
    }
}

Это приводит к ошибке «Не удается разрешить символ« получить »» - возможно, потому что я не могу передать никакие параметры таким способом.

Возможно, мне не хватает чего-то очень простого - есть идеи?

Ответы [ 2 ]

1 голос
/ 22 августа 2011

Вам не нужно вносить какие-либо изменения, если ваш другой класс находится в той же сборке, что и 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;
}
0 голосов
/ 22 августа 2011

у нас нет параметров в C #, кроме индексаторов. По этой причине вы получаете сообщение об ошибке. Измените код для использования метода.

Но я до сих пор не понимаю, зачем передавать метод в сборку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...