我有这个使用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但是我仍然坚持这个,有人能帮我一把吗?
谢谢
这是我的jsfiddle插图:http: //jsfiddle.net/hawaii/gN6CT/10/
我有一个json对象列表,我想使用jquery模板绑定到ul中,在每个li中我都有一个每个项目的复选框,以及项目详细信息.我希望它的工作方式是:
当用户单击复选框时,该项目将更新为选定的列表(此工作正常)
当用户点击项目的详细信息时,该项目将是所选项目,我将在右侧显示所有详细信息.这就是我将项目细节放在元素中的原因.
正如您从小提琴中看到的那样,它不按照我希望的方式工作,即使首次应用viewModel也会调用click绑定,当我单击复选框时,它也会调用click事件.
请你淘汰大师帮我吧.谢谢