c# – 为什么autofac会重复处理我的一次性用品?
发布时间:2020-12-15 19:45:22 所属栏目:百科 来源:网络整理
导读:嗨这对我来说似乎不对.这是它的设计方式吗? 我的一次性课程: class C : IDisposable{ public void Dispose() { Console.WriteLine("Disposing C"); }} 注册: cb.RegisterInstance(new C()); 用法: using (IContainer container = BuildContainer()){ var
嗨这对我来说似乎不对.这是它的设计方式吗?
我的一次性课程: class C : IDisposable { public void Dispose() { Console.WriteLine("Disposing C"); } } 注册: cb.RegisterInstance(new C()); 用法: using (IContainer container = BuildContainer()) { var c = container.Resolve<C>(); Console.WriteLine("C resolved"); } 输出: C resolved Disposing C Disposing C 我认为在同一个对象上多次调用Dispose是一件坏事. 注意: cb.Register(c => new C()); 它只被处置一次.为什么不同? 解决方法
它不是,Dispose应该是多次安全的.从文档:“The object must not throw an exception if its Dispose method is called multiple times.”因为这应该是安全的,你不应该只依赖其他库只调用一次,并且你认为不应该导致多个Dispose调用的更改没有任何问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |