Unity: тип, зарегистрированный в ContainerControlledLifetimeManager, не является Singleton - PullRequest
0 голосов
/ 28 сентября 2019

У меня проблема с контейнером Unity в приложении WPF.Я использую Prism с UnityBootstrapper.Мне нужно зарегистрировать класс как синглтон.Это класс:

public class RepositoryBase<T> : IRepository<T> where T : class, new()
{
    private string connectionString;

    public RepositoryBase(string conne)
    {
        connectionString = conne;
    }

    public async Task<List<T>> Get()
    {
        var db = GetDbConnection();
        var value = await db.GetAllWithChildrenAsync<T>(recursive: true);
        CloseDatabaseConnection(db);
        return value;
    }      
}

В загрузчике я регистрирую вышеуказанный тип следующим образом:

protected override void ConfigureContainer()
{
    var assemblyLocation = System.Reflection.Assembly.GetExecutingAssembly().Location;
    var path = System.IO.Path.GetDirectoryName(assemblyLocation);
    path = Path.Combine(path, "Data.db3");
    Container.RegisterType(typeof(IRepository<>), typeof(Data.RepositoryBase<>), new ContainerControlledLifetimeManager(), new InjectionConstructor(path));

    base.ConfigureContainer();
}

Однако, если я помещаю точку останова в конструктор класса RepositoryBase,Я вижу, как он ломается несколько раз.Кто-нибудь может увидеть, что я делаю не так?

...