如何解决统一解决,无需输入类型信息
Unity支持基于类型的解析
geom_density
这意味着在不知道T的情况下,我无法解析,我正在为我的统一容器编写一些扩展方法,我想在其中添加要返回对象类型的Resolve方法。
T obj = container.Resolve<T>("id");
因为注册时我已经知道T了,所以我可以输入带有“ ID”的字典。这是不可靠的,因为unity本身可以解析某些类型(即使未注册),是否有一种更简单可靠的方法来仅使用Id进行解析?
这与由于性能问题而从反射调用泛型方法有所不同,并且由于资源已经为DI统一注册,因此我想使用现有解决方案保持一致性。
解决方法
现在,如果我可以通过ID解析某些内容并返回对象或动态对象,则可以在内部使用类型转换器将其转换为以后的预期类型。前期我不知道必须使用哪种类型。
如果object
是您的界面,您当然可以使用 :
container.RegisterType<object,ObscureService>( "service" );
container.RegisterType<object,SecretPlugin>( "plugin" );
object unknown = container.Resolve<object>( "service" );
object anotherUnknown = container.Resolve<object>( "plugin" );
但是,此方法非常有限(明智)。我想说的是,仅当您根据用户的直接请求采取行动并且解决的未知数是某种视图模型,才只能将其呈现给用户。
如果代码请求对象,那么没有理由为什么该代码不能以某种方式知道其请求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。