【DryIOC】容器的创建与销毁

1. 容器创建

void Main()
{
	// 以下两种方式等价
	var container1 = new Container();
	var container2 = new Container(rules: Rules.Default, scopeContext: null);
}

1.1 构造函数

//
 // 摘要:
 //     Creates new container with default rules DryIoc.Rules.Default.
 public Container();
 //
 // 摘要:
 //     Creates new container, optionally providing DryIoc.Container.Rules to modify
 //     default container behavior.
 //
 // 参数:
 //   rules:
 //     (optional) Rules to modify container default resolution behavior. If not specified,
 //     then DryIoc.Rules.Default will be used.
 //
 //   scopeContext:
 //     (optional) Scope context to use for scoped reuse.
 public Container(Rules rules = null, IScopeContext scopeContext = null);
 //
 // 摘要:
 //     Creates new container with configured rules.
 //
 // 参数:
 //   configure:
 //     Allows to modify DryIoc.Rules.Default rules.
 //
 //   scopeContext:
 //     (optional) Scope context to use for DryIoc.Reuse.InCurrentScope.
 public Container(Func<Rules, Rules> configure, IScopeContext scopeContext = null);

2. 规则

规则定义容器的行为与协议。规则是不可变的,可以通过With.../Without方法从一个旧的规则获取新的规则。

void Main()
{
	{
		var container1 = new Container(Rules.Default.With(FactoryMethod.ConstructorWithResolvableArguments));
		var container2 = new Container(Rules.Default.WithoutThrowIfDependencyHasShorterReuseLifespan());
	}

	{
		var container1 = new Container(rules => rules.WithDefaultReuse(Reuse.Singleton));
		var container2 = new Container(rules => rules.WithAutoConcreteTypeResolution());
	}
}

3. 销毁容器

容器实现了 IDisposable接口,在不需要使用时应该被释放。释放容器将执行以下操作:

  • 释放单例
  • 移除所有注册
  • 设置规则为Rules.Empty
void Main()
{
	MyService myService;
    using (var container = new Container())
    {
        container.Register<MyService>(Reuse.Singleton);
        myService = container.Resolve<MyService>();
    }

    Console.WriteLine(myService.IsDisposed); // True
}

public class MyService : IDisposable
{
	public bool IsDisposed { get; private set; }
	public void Dispose() => IsDisposed = true;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhy29563

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值