我不知道如何完成以下工作:
我有一个属性:
public class Authorize : ActionFilterAttribute
{
private readonly IAccessPermissionRepository _repository;
public Authorize(IAccessPermissionRepository repository)
{
_repository = repository;
}
...
}默认情况下,IAccessPermissionRepository被解析为IoC。
我在控制器类中使用它,像这样
[ServiceFilter(typeof(Authorize))]
public IActionResult Index()但是现在我想向构造函数传递额外的参数,每个操作和控制器都不同。通常我只会使用构造函数。你看。
发布于 2016-12-16 14:45:00
您使用TypeFilter而不是ServiceFilter,如下所示:
[TypeFilter(typeof(HasDummyPrivilegeAttribute), Arguments = new object[] { "dummyId" })]HasDummyPrivilegeAttribute看起来像:
public class HasDummyPrivilegeAttribute : ActionFilterAttribute
{
private readonly string _idParameterName;
private readonly IAccessPermissionRepository _repo;
public HasServicePrivilegeAttribute(
string idParameterName,
[FromServices] IAccessPermissionRepository repo)
{
_idParameterName = idParameterName;
_repo = repo;
}
public override void OnActionExecuting(ActionExecutingContext context)
{
//TODO Something awesome here with _idParameterName and _repo
}
}https://stackoverflow.com/questions/41184218
复制相似问题