得到单例实例

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内核表单代码?

Rem*_*oor 5

你必须配置类是单例:

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)