当前位置: 首页 > 编程语言 > C#

UnityApplicationBlock,如何给InjectionFactory传参?分享

时间:2023-04-11 10:35:29 C#

Unity应用程序块,如何给InjectionFactory传递参数?这就是我现在拥有的Container.RegisterType();Container.RegisterType(newInjectionFactory((c)=>c.Resolve().GetUser("John")));得到它Container.Resolve();我想将名称作为参数传递给工厂,这样我就可以用名称解析用户对象;像这样的东西:Container.Resolve("Jonh");我如何更改这种情况下的类型注册?虽然大多数DI框架都具有执行这些类型的注册的高级功能,但我个人宁愿更改应用程序的设计以解决此类问题。这使我的DI配置保持简单,并使代码更易于理解。特别是对于依赖于某些上下文(线程、请求等)或必须显式管理生命周期的对象的创建,我喜欢定义工厂。工厂使这些事情更加明确。在您的情况下,您想要获取特定用户的个人资料。这通常是您想要工厂的目的。这是一个示例://DefinitionpublicinterfaceIProfileFactory{IProfileCreateProfileForUser(stringusername);}//用法varprofile=Container.Resolve().CreateProfileForUser("John");//注册Container.RegisterType();//模拟实现publicclassProfileFactory:IProfileFactory{publicIProfileCreateProfileForUser(stringusername){IUseruser=Container.Resolve().GetUser(username);返回新的用户配置文件(用户);}}我希望这有帮助。Resolve方法允许传递ResolverOverride参数。ResolverOverride的子类型是ParameterOverride,可用于将参数传递给已解析的构造函数。可以这样做(参数是Name,传值是John):以上是C#学习教程:UnityApplicationBlock,如何将参数传递给InjectionFactory?所有分享的内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——Container.Resolve(newParameterOverride("Name","John"));本文收集自网络,并不代表侵权,如有侵权,请点击右边联系管理员删除。如需转载请注明出处: