首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >unity如何解析构造函数的参数?

unity如何解析构造函数的参数?
EN

Stack Overflow用户
提问于 2015-06-03 20:38:37
回答 1查看 499关注 0票数 1

我遇到了一些代码,看起来像这样:

var something = this.container.Resolve<ICatManager>();

其在web配置中具有从ICatManagerCatManager的映射。

然而,CatManager有一个接受2个参数的构造函数,没有默认的构造函数。

unity是如何创建它的实例的呢?

EN

回答 1

Stack Overflow用户

发布于 2015-08-07 17:24:41

Unity和几乎所有其他服务容器/服务解析器/服务定位器的工作方式是分析可用的构造函数,找到“最佳构造函数”,然后注入参数。

那么,这些参数从何而来呢?来自服务容器本身。

例如,如果你有这样的服务:

代码语言:javascript
代码运行次数:0
运行
复制
interface IService { ... }
class ServiceImplementation : IService
{
    public ServiceImplementation(IOtherService os, IThirdService ts) { ... }
}

然后,当您解析IService时,Unity将尝试递归地解析IOtherServiceIThirdService。如果实现这些服务的实际类还需要其他服务,它会递归地执行此解析,直到一切正常。

所以基本上你可以这样想解析调用:

代码语言:javascript
代码运行次数:0
运行
复制
var os = container.Resolve<IOtherService>();
var ts = container.Resolve<IThirdService>();
return new ServiceImplementation(os, ts);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30620342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档