小编Noe*_*oel的帖子

单元测试ASP.NET WebAPI控制器的POST操作

    public HttpResponseMessage Save(IList<Models.Activity> activities)
    {
       //some controller code
        return Request.CreateResponse(HttpStatusCode.Created, activities, Configuration);
    }
Run Code Online (Sandbox Code Playgroud)

如何对活动正确传递给Request.CreateResponse进行单元测试?

asp.net unit-testing asp.net-web-api

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

如何定义ICollection的扩展方法<T>其中T:IMyInterface而不在方法定义中指定T.

背景:我希望在DTO映射到实体时挂钩业务规则.我认为将映射封装到扩展方法将是一个很好的途径.

IEntityDto是可以直接映射到实体的所有DTO实现的接口.

单个实例工作正常:

public static TEntity MapTo<TEntity>(this IEntityDto dto)
{
    ... Run Business Rules that don't require db access ...
    return AutoMapper.Mapper.Map<TEntity>(dto);
}
Run Code Online (Sandbox Code Playgroud)

我也想以同样的方式扩展ICollection:

public static ICollection<TEntity> MapToCollection<TEntity>(this ICollection<IEntityDto> dtos)
{
    ... Run Business Rules that don't require db access ...
    return AutoMapper.Mapper.Map<ICollection<TEntity>>(dtos);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,MapToCollection没有显示在上下文菜单上,也不会在应用于IEntlection的ICollection时进行编译.

为了让这个工作,我错过了什么?我是否需要扩展ICollection,其中T是IEntityDto?在调用扩展方法时,我宁愿不必包含DTO类型.

public static ICollection<TEntity>MapToCollection<TDto,TEntity>(this ICollection<TDto> dtos) where TDto: IEntityDto
{
    ... Do Work and Return ...
}
Run Code Online (Sandbox Code Playgroud)

上面的工作,但我希望从集合推断T.

谢谢!

c# generics extension-methods automapper

2
推荐指数
1
解决办法
577
查看次数