在大多数示例here,here和here中,我看到了来自WithMappings
,WithLifetime
和WithName
的类的方法访问程序集Microsoft.Practices.Unity.RegistrationByConvention.dll
版本3.5.0就好像它们是属性一样,但是当我在Reflector中查找它们时,我发现它们是方法,它们(大多数)期望System.Type
或数组{ {1}}。
这笔交易是什么?这些例子是错的还是我错过了什么?
答案 0 :(得分:0)
如果你看一下container.RegisterTypes方法的定义,你会发现getFromTypes,getName,getLifetimeManager和getInjectionMembers都期望类型为Func,这意味着他们期望一个方法。例如,getName定义为:
Func<Type, string> getName = null
这允许您传入一个接受Type参数的方法并返回一个字符串,例如标准string WithName.TypeName(Type type)
方法。但是,如果您想为Unity提供自定义注册命名逻辑,或者示例,它还可以灵活地使用相同的签名定义您自己的方法。