.net - 获取单例实例

标签 .net dependency-injection ninject ioc-container

我正在测试 Ninject 并试图了解如何将存储库注入(inject)到单例类中。 下面是工作存储库和单例类示例...

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()
    {

    }
}

成功通过的测试方法

[TestMethod]
public void SimpleTestSingleton()
{
    using (IKernel kernel = new StandardKernel())
    {
        kernel.Bind<ITestRepository>().To<TestRepository>();
        var testSingletonInjectionClass = 
            kernel.Get<TestSingletonInjectionClass>();\

        Assert.IsNotNull(testSingletonInjectionClass);
    }
}

我有两个问题

1.这是获取单例类实例的正确方法吗?

 kernel.Get<TestSingletonInjectionClass>()

2.如何从应用代码中获取单例实例类。在测试方法中,我创建 Ninject Kernel 并访问 Get 方法。如何访问ninject内核表单代码?

最佳答案

您必须将类配置为单例:

kernel.Bind<TestSingletonInjectionClass>().ToSelf().InSingletonScope();

在实现中,您可以通过将其传递给消费类的构造函数来获取它。

public class Foo
{
    public Foo(TestSingletonInjectionClass testSingletonInjectionClass)
    {
        this.testSingletonInjectionClass = testSingletonInjectionClass;
    }
}

关于.net - 获取单例实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10120719/

相关文章:

c# - 处理线程中 catch block 内抛出的异常的最佳实践。 (。网)

.net - 线程事件处理 (C#)

c# - 在 .NET 对象上设置 "nullable"属性

c# - 管理一次性类依赖注入(inject)

C# -(Unity .NET 项目)如何包含引用脚本但不应编译

dependency-injection - 与接口(interface)、工厂和控制反转混淆

database - 如何在 laravel 中自动将数据库从 mysql 更改为 mongodb

c# - CaSTLe Windsor 依赖注入(inject),基于客户的自定义实现

asp.net-mvc-3 - Autofac 相当于 Ninject 的 WhenInjectedInto()

c# - 通用注入(inject)工厂