Arhn - архитектура программирования

Как вы можете заставить Unity создать новый экземпляр?

Используя блок приложения Unity, как вы можете заставить конфигурацию Unity создать новый экземпляр объекта, когда мы вызываем метод UnityContainer.Resolve<T>() в контексте WCF?


  • Какой жизненный менеджер вы используете? Кроме того, вы хотите избавиться от неуправляемого объекта? 21.08.2012
  • Я не настроил менеджера жизни, мне нужно избавиться от объектов репозитория 21.08.2012
  • почему вы знаете, что ваш объект репозитория не удален? 22.08.2012
  • Если я вручную обновляю базу данных, это не отражается в Entity Framework, также я включил строку в метод Dispose для регистрации того факта, что метод вызывается в текстовом файле, а журнал не создается. 22.08.2012
  • Я понял, ну, Unity не поддерживает вызов Dispose для вас, он просто освобождает ссылку и позволяет GC собирать. Большинство IoC вам нужно вручную удалить 22.08.2012

Ответы:


1

Lifetime Manager в Unity — это все, что тебе нужно. По умолчанию Unity использует TransientLifetimeManager:

TransientLifetimeManager. Для этого диспетчера времени жизни Unity создает и возвращает новый экземпляр запрошенного типа для каждого вызова метода Resolve или ResolveAll. Этот менеджер времени жизни используется по умолчанию для всех типов, зарегистрированных с помощью метода RegisterType, если вы не укажете другой менеджер времени жизни.

Если вам нужно использовать другой менеджер времени жизни, просто укажите в методе Register:

var container = new UnityContainer();
container.RegisterType<IMyType, MyType>(new PerResolveLifetimeManager()); 
21.08.2012

2

Использование RegisterType без a LifetimeManager должно вводить новый экземпляр типа каждый раз, когда он вводится

Из MSDN:

Если вы не укажете значение для времени жизни, тип будет зарегистрирован для переходного времени жизни, что означает, что новый экземпляр будет создаваться при каждом вызове Resolve.

21.08.2012
  • Это работает, но теперь, когда я реализую это в своем приложении WCF, оно не избавляется от каких-либо объектов, каких-либо идей? 21.08.2012
  • @AndyClark clark — мы также используем Unity 2.1.505, EF 4.3.1 с шаблоном репозитория, на уровне службы WCF, а также с настройкой конфигурации. Одним из отличий может быть то, что мы используем поведение службы WCF для начальной загрузки? rafatolotti.wordpress.com/2010/09/12/wcf -unity-app-block. 21.08.2012
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..