- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在寻找一种方法来注册具有指定生活方式的具体类型,基本上类似于以下内容。
public void SomeFunction( Type concrete, Lifestyle lifestyle ) =>
container.Register( concrete, lifestyle );
最佳答案
在 Simple Injector 中进行单个一对一映射时,实际上只有一种方法:
Container.Register(Type serviceType, Type implementationType, Lifestyle lifestyle);
所有其他方法只是该方法的方便重载或“快捷方式”。以下方法为例:
Container.Register<TService, TImplementation>(Lifestyle)
最终通过调用 Register(typeof(TService), typeof(TImplementation), lifestyle)
退回到非泛型重载.
同样适用于不接受 Lifestyle
的重载:
Container.Register<TService, TImplementation>()
他们只是通过为给定的实现类型提供确定的生活方式来转发调用,这是 - 在默认配置下 - 是短暂的生活方式:Register<TService, TImpementation>(Lifestyle.Transient)
.
并且有多个重载允许对具体类型进行快捷注册,例如:
Container.Register<TConcrete>()
此方法将调用转发给 Register<TConcrete, TConcrete>()
.换句话说,TConcrete
均提供给 TService
和 TImplementation
.所以最终,这个电话以Register(typeof(TConcrete), typeof(TConcrete), Lifestyle.Transient)
结束。 .
所以,长话短说,以下方法可让您注册具有生活方式的具体类型:
Register<TConcrete>(Lifestyle.Scoped)
Register<TConcrete, TConcrete>(Lifestyle.Scoped)
Register(typeof(Concrete), typeof(Concrete), Lifestyle.Scoped);
关于c# - 简单的注入(inject)器注册混凝土类型与生活方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42499627/
我尝试将文件对象附加到邮件对象。 我在我的观点中包含了以下内容: $f = new Concrete\Core\Application\Service\FileManager(); //... ech
我是一名优秀的程序员,十分优秀!