小编tua*_*nvt的帖子

在windsor的请求者上注册基于参数名称的组件

我有这个使用AutoMapper的界面:

public interface IMapper
{
    object Map(object source, Type sourceType, Type destinationType);
}
Run Code Online (Sandbox Code Playgroud)

然后对于每种类型的数据,我有一个不同的映射器类,例如:

 public class UserMapper : IMapper
{
    static UserMapper()
    {
        Mapper.CreateMap<User, UserViewModel>();
        Mapper.CreateMap<UserViewModel, User>();
    }

    public object Map(object source, Type sourceType, Type destinationType)
    {
        return Mapper.Map(source, sourceType, destinationType);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我将IMapper作为我的控制器类中的参数之一,如下所示:

public UsersController(IUsersRepository repo, IMapper userMapper)
{....}
Run Code Online (Sandbox Code Playgroud)

我使用Windsor作为我的应用程序的IOC,问题是我想注册组件,因此当在UsersController中运行时,它使用UserMapper类,如果在ProductsController上运行,它将使用我的ProductMapper类.

我的注册码看起来像这样:

container.Register(
    Component.For<IMapper>()
             .ImplementedBy<UsersMapper>()
             .Named("usersMapper"),
    Component.For<IMapper>()
             .ImplementedBy<ProductsMapper>()
             .Named("productsMapper"),
    Component.For<ProductController>()
             .ServiceOverrides(ServiceOverride.ForKey("usersMapper").Eq("productsMapper"))
)
Run Code Online (Sandbox Code Playgroud)

我已经完成了google和stackoverflow上的功课,我知道我需要使用ServicesOverride但是我仍然坚持这个,有人能帮我一把吗?

谢谢

components castle-windsor inversion-of-control

4
推荐指数
2
解决办法
2078
查看次数

Knockout列表绑定与复选框和单击句柄

这是我的jsfiddle插图:http: //jsfiddle.net/hawaii/gN6CT/10/

我有一个json对象列表,我想使用jquery模板绑定到ul中,在每个li中我都有一个每个项目的复选框,以及项目详细信息.我希望它的工作方式是:

当用户单击复选框时,该项目将更新为选定的列表(此工作正常)

当用户点击项目的详细信息时,该项目将是所选项目,我将在右侧显示所有详细信息.这就是我将项目细节放在元素中的原因.

正如您从小提琴中看到的那样,它不按照我希望的方式工作,即使首次应用viewModel也会调用click绑定,当我单击复选框时,它也会调用click事件.

请你淘汰大师帮我吧.谢谢

javascript knockout-mapping-plugin knockout-2.0 knockout.js

3
推荐指数
1
解决办法
5024
查看次数