作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我一直在使用 Microsoft 的 Unity IOC 容器。 RegisterType()
方法有一堆重载看起来都类似于
IUnityContainer RegisterType(Type t, params InjectionMember[] injectionMembers);
我想知道 injectionMembers
参数是什么时候用的?我找不到它们的任何文档(即使它们在每个重载中),而且我看过的示例代码都没有使用它们。
我是不是漏掉了什么?它们不常用还是我只是错过了示例?
最佳答案
InjectionMember
数组的重载被使用,当你没有提供一个配置文件,Unity 告诉如何创建一个给定类型的实例,或者如果你想通过其他方式创建一个实例比配置文件中定义的要多。
当你想在没有配置文件的情况下配置一个统一容器时,使用重载。 InjectionMember
可以是构造函数、属性或方法调用。
以下代码摘自 Unity 帮助,展示了如何通过容器的流畅界面使用 InjectionMembers
。
IUnityContainer myContainer = new UnityContainer();
myContainer.Configure<InjectedMembers>()
.ConfigureInjectionFor<MyObject>(
new InjectionConstructor(12, "Hello Unity!"),
new InjectionProperty("MyStringProperty", "SomeText"));
下面的XML配置等价于上面的代码。
<type type="MyObject" mapTo="MyObject" name="MyObject">
<typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration">
<constructor>
<param name="someInt" parameterType="int">
<value value="12"/>
</param>
<param name="someText" parameterType="string">
<value value="Hello Unity!"/>
</param>
</constructor>
<property name="MyStringProperty" propertyType="string">
<value value="SomeText"/>
</property>
</typeConfig>
</type>
关于c# - RegisterType() 调用中的 InjectionMembers 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1550007/
我一直在使用 Microsoft 的 Unity IOC 容器。 RegisterType() 方法有一堆重载看起来都类似于 IUnityContainer RegisterType(Type t,
我是一名优秀的程序员,十分优秀!