Есть ли способ реализации такой фабрики на основе 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 здесь.