加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

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

解决方法

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调用的更改没有任何问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读