Unity.RegistrationByConvention.WithXXX成员在实际上是方法时被访问属性

时间:2014-08-01 07:34:20

标签: c# .net inversion-of-control unity-container ioc-container

在大多数示例hereherehere中,我看到了来自WithMappingsWithLifetimeWithName的类的方法访问程序集Microsoft.Practices.Unity.RegistrationByConvention.dll版本3.5.0就好像它们是属性一样,但是当我在Reflector中查找它们时,我发现它们是方法,它们(大多数)期望System.Type或数组{ {1}}。

这笔交易是什么?这些例子是错的还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

如果你看一下container.RegisterTypes方法的定义,你会发现getFromTypes,getName,getLifetimeManager和getInjectionMembers都期望类型为Func,这意味着他们期望一个方法。例如,getName定义为:

Func<Type, string> getName = null

这允许您传入一个接受Type参数的方法并返回一个字符串,例如标准string WithName.TypeName(Type type)方法。但是,如果您想为Unity提供自定义注册命名逻辑,或者示例,它还可以灵活地使用相同的签名定义您自己的方法。