У меня есть интерфейс, привязанный к классу. Все работает как за исключением. Я хочу создать класс с инжектором конструктора без передачи моего ядра всюду. Я хочу, чтобы для них предлагалась одна машина. Как я могу создать его без использования библиотеки ninject.extensions.factory.Ninject Singleton Factory
ответ
Если вы хотите создать фабрику, но без использования Factory Extension (не знаю, почему, это именно то, что вам нужно здесь, я думаю) вы можете сделать что-то вроде следующего:
public class FooFactory : IFooFactory
{
// allows us to Get things from the kernel, but not add new bindings etc.
private readonly IResolutionRoot resolutionRoot;
public FooFactory(IResolutionRoot resolutionRoot)
{
this.resolutionRoot = resolutionRoot;
}
public IFoo CreateFoo()
{
return this.resolutionRoot.Get<IFoo>();
}
// or if you want to specify a value at runtime...
public IFoo CreateFoo(string myArg)
{
return this.resolutionRoot.Get<IFoo>(new ConstructorArgument("myArg", myArg));
}
}
public class Foo : IFoo { ... }
public class NeedsFooAtRuntime
{
public NeedsFooAtRuntime(IFooFactory factory)
{
this.foo = factory.CreateFoo("test");
}
}
Bind<IFooFactory>().To<FooFactory>();
Bind<IFoo>().To<Foo>();
Расширение Factory только делает все это для вас во время выполнения. Вам нужно только определить заводский интерфейс, а расширение создает динамическую динамику.
Попробуйте этот код:
class NinjectKernelSingleton
{
private static YourKernel _kernel;
public static YourKernel Kernel
{
get { return _kernel ?? (_kernel = new YourKernel()); }
}
}
public class YourKernel
{
private IKernel _kernel;
public YourKernel()
{
_kernel = InitKernel();
}
private IKernel InitKernel()
{
//Ninject init logic goes here
}
public T Resolve<T>()
{
return _kernel.Get<T>();
}
}
Я бы не предложил идти по этому маршруту, так как это пример анти-шаблона локатора сервиса: http://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern/ – rossipedia
- это приемлемый шаблон дизайна это так? –
Проверьте код .. –
- 1. Ninject Singleton vs CS Singleton
- 2. Ninject Factory Extension
- 3. Ninject Factory + InCallScope + ContextPreservation
- 4. Singleton Factory method
- 5. singleton factory connection pdo
- 6. Создание singleton factory
- 7. Java Abstract Factory - Singleton
- 8. Factory Initializer + Singleton
- 9. Альтернатива Singleton-Factory
- 10. singleton vs factory?
- 11. Singleton factory, вроде
- 12. Ninject за сеанс singleton?
- 13. Ninject singleton scope loading
- 14. Ninject and Singleton
- 15. Ninject Singleton Scope
- 16. Ninject и Custom Controller Factory
- 17. Ninject Factory Pattern and Bindings
- 18. Java Factory Method/Singleton pattern
- 19. Singleton toolbox vs factory method
- 20. Репозиторий с Ninject и расширение Ninject Factory. Потерять магические струны?
- 21. Ninject Factory против ленивых <T>
- 22. Ninject Factory NamedLikeFactoryMethod не работает как указано?
- 23. Ninject Kernel Factory: Хорошая идея или нет
- 24. Ninject factory create T основано на перечислении
- 25. Ninject Singleton не вводится как Singleton в зависимый класс
- 26. Должен ли C# Unity Factory быть Singleton?
- 27. Singleton Factory для синтаксического анализа сообщений
- 28. Singleton Factory Member Функция Thread Safety
- 29. RavenDB- Building Session Factory, singleton DocumentStore
- 30. Ninject Singleton Scope Inside Console Application
Укажите тип вашего приложения (exe/WF/Service/MVC) - есть ли какие-то утилиты, относящиеся к каждой технологии? –
Его WPF, но мне он нужен внутри класса модели данных, не внутри какой-либо viewmodel или чего-то еще. –