c# – 为什么autofac会重复处理我的一次性用品?

c# – 为什么autofac会重复处理我的一次性用品?,第1张

概述嗨这对我来说似乎不对.这是它的设计方式吗? 我的一次性课程: class C : IDisposable{ public void Dispose() { Console.WriteLine("Disposing C"); }} 注册: cb.RegisterInstance(new C()); 用法: using (IContainer contain 嗨这对我来说似乎不对.这是它的设计方式吗?

我的一次性课程:

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 resolveddisposing Cdisposing C

我认为在同一个对象上多次调用dispose是一件坏事.

注意:
当我注册这样的课程

cb.Register(c => new C());

它只被处置一次.为什么不同?

解决方法

I think its a bad thing to call dispose multiple times on the same object.

它不是,dispose应该是多次安全的.从文档:“The object must not throw an exception if its Dispose method is called multiple times.”因为这应该是安全的,你不应该只依赖其他库只调用一次,并且你认为不应该导致多个dispose调用的更改没有任何问题.

总结

以上是内存溢出为你收集整理的c# – 为什么autofac会重复处理我的一次性用品?全部内容,希望文章能够帮你解决c# – 为什么autofac会重复处理我的一次性用品?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1224771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存