Как реализовать параметризованный синглтон с Ninject - PullRequest
0 голосов
/ 04 января 2019

Есть ли способ реализации такой фабрики на основе Ninject:

    public class AspectProviderFactory  
{
    private readonly Dictionary<string, IAspectProvider> Instances = new Dictionary<string, IAspectProvider>();

    public IAspectProvider Get(string aspectName)
    {
        if (!Instances.ContainsKey(aspectName)) 
            Instances[aspectName] = new AspectProvider(aspectName);
        return Instances[aspectName];
    }
}

если мне нужен каждый экземпляр-одиночка для каждого строкового параметра.

Bind<IAspectProvider>().ToConstructor(ctorArg => new AspectProvider(ctorArg.Inject<string>())).InSingletonScope();

и

var instance1 = Kernel.Get<IAspectParameter>(new ConstructorArgument("aspectName",
                "aspect1");
var instance2 = Kernel.Get<IAspectParameter>(new ConstructorArgument("aspectName",
                "aspect2");

не решает проблему, потому что выводит экземпляр по типу, а не по строковому параметру, поэтому instance1 == instance2 здесь.

...