首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注册默认命名注册

注册默认命名注册
EN

Stack Overflow用户
提问于 2014-12-04 20:59:25
回答 1查看 107关注 0票数 0

使用Unity,您可以注册一个接口,这样它就可以使用一些参数解析一个类型,还可以有命名注册:

代码语言:javascript
复制
container.RegisterType<IInterface, MyClass>(
    new InjectionConstructor(new ResolvedParameter<string>("Default"))
    );

container.RegisterType<IInterface, MyClass>(
    "Named First",
    new InjectionConstructor(new ResolvedParameter<string>("Named First"))
    );

container.RegisterType<IInterface, MyClass>(
    "Named Second",
    new InjectionConstructor(new ResolvedParameter<string>("Named Second"))
    );

假设我希望我的默认注册与“命名第二”注册做同样的事情。我可以这么做:

代码语言:javascript
复制
container.RegisterType<IInterface, MyClass>(
    new InjectionConstructor(new ResolvedParameter<string>("Named Second"))
    );

是否存在默认设置(未命名)的方法?注册指向第二个命名注册,而不是复制整个事件?类似于:

代码语言:javascript
复制
container.RegisterType<IInterface, IInterface("Named Second")>(); // Doesn't work.

在这个例子中,它只是一个只有一个参数的构造函数,但是假设构造函数包含8个接口,2个InjectionProperties和一个InjectionMethod,您可能不想重复这个过程,从而冒着去同步的风险。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-04 21:13:23

怎么样

代码语言:javascript
复制
container.RegisterType<IInterface>( new InjectionFactory(
   c => c.Resolve<IInterface>( "Named Second" ) ) );

还没有测试过,但它应该能满足你的需要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27303961

复制
相关文章

相似问题

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