Tom*_*mas 2 .net dependency-injection ninject ioc-container
我正在测试Ninject并试图了解如何将存储库注入到单例类中.下面是工作存储库和单例类示例...
public interface ITestRepository
{
void TestRepositoryMethod();
}
public class TestRepository:ITestRepository
{
public void TestRepositoryMethod()
{
}
}
public class TestSingletonInjectionClass
{
private readonly ITestRepository _repository;
public TestSingletonInjectionClass(
ITestRepository repository)
{
_repository = repository;
}
public void TestMethod()
{
}
}
Run Code Online (Sandbox Code Playgroud)
通过成功的测试方法
[TestMethod]
public void SimpleTestSingleton()
{
using (IKernel kernel = new StandardKernel())
{
kernel.Bind<ITestRepository>().To<TestRepository>();
var testSingletonInjectionClass =
kernel.Get<TestSingletonInjectionClass>();\
Assert.IsNotNull(testSingletonInjectionClass);
}
}
Run Code Online (Sandbox Code Playgroud)
我有两个问题
1.这是获取单例类实例的正确方法吗?
kernel.Get<TestSingletonInjectionClass>()
Run Code Online (Sandbox Code Playgroud)
2.如何从应用程序代码中获取单例实例类.在测试方法中,我创建Ninject内核并访问Get方法.如何访问ninject内核表单代码?
你必须配置类是单例:
kernel.Bind<TestSingletonInjectionClass>().ToSelf().InSingletonScope();
Run Code Online (Sandbox Code Playgroud)
在实现中,您可以通过将其传递给使用类的构造函数来获取它.
public class Foo
{
public Foo(TestSingletonInjectionClass testSingletonInjectionClass)
{
this.testSingletonInjectionClass = testSingletonInjectionClass;
}
}
Run Code Online (Sandbox Code Playgroud)