小编Nav*_*d K的帖子

与 StructureMap 4.6 瞬态生命周期的混淆

我使用 StructureMap 4.6 作为我的 IoC 容器。我对它的生命周期有点困惑。正如我在其文档中所读到的,Transient 将为每个容器创建一个对象实例。支持的生命周期

我正在通过创建一个简单的控制台应用程序项目来检查这个场景。我的代码如下:

程序.cs

class Program
{
    private static IContainer _Container;
    static void Main(string[] args)
    {
        _Container = Container.For<ConsoleRegistry>();

        var serv1 = _Container.GetInstance<IFileService>();
        Console.WriteLine($"Name: {_Container.Name}");
        Console.WriteLine(serv1.GetUniqueID());

        var serv2 = _Container.GetInstance<IFileService>();
        Console.WriteLine($"Name: {_Container.Name}");
        Console.WriteLine(serv2.GetUniqueID());

        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

控制台注册表

public class ConsoleRegistry : Registry
{
    public ConsoleRegistry()
    {
        Scan(_ =>
        {
            _.TheCallingAssembly();
            _.WithDefaultConventions();
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

文件服务

public interface IFileService
{
    string Read(string path);

    void Write(string path, string content);

    bool FileExists(string path);

    string GetUniqueID();
}
Run Code Online (Sandbox Code Playgroud)

文件服务.cs …

c# structuremap dependency-injection inversion-of-control

3
推荐指数
1
解决办法
596
查看次数