Почему значения не могут быть неявно преобразованы в строку в C #?

У меня есть код вроде:

int value = 5;
MessageBox.Show ( value );

и MessageBox. Show жалуется, говоря:

"не может преобразовать из int в Autofac Issue Plus 2 Другие вопросы Autofac ПРИМЕЧАНИЕ. Здесь есть 3 вопроса, и я не задавал отдельных вопросов, поскольку все они в некоторой степени связаны с одним и тем же кодом. У меня есть следующий код, который регистрирует соединение с моей RavenDB ...

ПРИМЕЧАНИЕ: Здесь есть 3 вопроса, и я не задавал отдельных вопросов, поскольку все они в некоторой степени связаны с одним и тем же кодом.

У меня есть следующий код, который регистрирует соединение с моей RavenDB в Application_Start один раз за жизненный цикл приложения:

var store = new DocumentStore { Url = "http://localhost:8080" };
store.Initialize();

builder.RegisterInstance(store).SingleInstance();

Теперь это работает нормально, и это то, что должно быть создано только один раз за жизненный цикл приложения. Теперь я хотел добавить DocumentSession в Autofac, поэтому я попытался добавить это в Application_Start:

var session = store.OpenSession();
builder.RegisterInstance(session).SingleInstance();

В моем UserRepository у меня есть следующий конструктор:

 public UserRepository(DocumentStore store, DocumentSession session)

Когда я пытаюсь запустить это, Я получаю следующую ошибку времени выполнения:

Не удается разрешить параметр 'Raven.Client.Document.DocumentSession Session' конструктора 'Void .ctor (Raven.Client.Document.DocumentStore, Raven.Client.Document.DocumentSession)'

Эта ошибка для меня звучит так, как будто Autofac не думает, что у него есть DocumentSession, однако именно это возвращает store.OpenSession (), поэтому он должен. Кто-нибудь знает, что может вызвать эту ошибку? Правильно ли я устанавливаю переменную сеанса (она аналогична переменной хранилища, которая работает нормально)?

Еще одна вещь, которая может иметь или не быть связана с вышеуказанной проблемой, - это как мне добавить экземпляр объекта в Autofac на запрос, а не на жизненный цикл приложения? Хотя объект RavenDB DocumentStore следует создавать только один раз в жизненном цикле приложения, DocumentSession должен создаваться один раз для каждого запроса (возможно, создание его для каждого уровня приложения вызывает указанную выше ошибку).

Последний вопрос, который я задам по поводу Autofac (слегка связанный с приведенным выше кодом), касается освобождения объектов. Если вы посмотрите на это руководство:

http://codeofrob.com/archive/2010/09/29/ravendb-image-gallery-project-iii-the-application-lifecycle.aspx

Последний фрагмент кода:

ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects();

и цель этого кода - предотвратить утечку сеансов. Теперь нужно ли мне беспокоиться об этом для Autofac, и если да, то как мне это сделать в Autofac?

8
задан ryanzec 1 April 2011 в 17:11
поделиться