我有一個綁定到某一類接口。一切工作都像例外。我想用構造函數注入創建類,而無需將內核傳遞到任何地方。我想爲這些建議設立一個單身工廠。我如何創建一個不使用ninject.extensions.factory庫。Ninject辛格爾頓廠
回答
如果你想創建一個工廠,但沒有使用的工廠擴展(不知道爲什麼,這是你需要的東西在這裏我想)你可以做類似如下:
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 Extension只是在運行時爲您完成所有工作。你只需要定義工廠接口,擴展就可以動態地創建實現。
試試這個代碼:
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 2013-03-16 18:46:19
它是一個可以接受的設計模式做它喜歡這些? – 2013-03-16 18:46:38
檢查代碼.. – 2013-03-16 18:55:36
- 1. 辛格爾頓Vs的辛格爾頓廠
- 2. 辛格爾頓
- 3. 辛格爾頓工廠在PHP
- 4. 辛格爾頓ExtJs4
- 5. swift3 - 辛格爾頓
- 6. 辛格爾頓子
- 7. 辛格爾頓會話bean
- 8. 辛格爾頓NServiceBus佐賀
- 9. 辛格爾頓與集羣
- 10. jQuery的辛格爾頓
- 11. 辛格爾頓功能IOS
- 12. PHP OOP辛格爾頓
- 13. Unity3D辛格爾頓用MonoBehavior
- 14. 辛格爾頓V/S類
- 15. 辛格爾頓溶液
- 16. 辛格爾頓反模式
- 17. 的mysqli和辛格爾頓
- 18. C++辛格爾頓失敗
- 19. 辛格爾頓在Java中
- 20. 辛格爾頓迅速3
- 21. 辛格爾頓在Android的
- 22. 辛格爾頓問題
- 23. 辛格爾頓實例
- 24. .NET DbProviderFactory和辛格爾頓
- 25. 辛格爾頓事件
- 26. 辛格爾頓的viewController
- 27. 什麼是辛格爾頓
- 28. 辛格爾頓Imlementation類
- 29. 辛格爾頓 - 有道
- 30. 辛格爾頓與JBoss SEAM
請提供您的應用程序類型(EXE/WF /服務/ MVC) - 也有一些相關的每個技術utils的? – 2013-03-16 18:40:20
它的WPF,但我需要它在一個數據模型類裏面沒有任何viewmodel什麼的。 – 2013-03-16 18:41:37