Я пытаюсь снизить значение экземпляра контроллера внутри фильтра действий, и у меня возникают проблемы при этом.
У меня есть класс DefaultController
:
public abstract partial class DefaultController<T> : Controller where T : IBaseEntity
{
}
IBaseEntity
is:
public interface IBaseEntity
{
int Id { get; set; }
DateTime CreatedOn { get; set; }
DateTime ModifiedOn { get; set; }
int CreatedBy { get; set; }
int ModifiedBy { get; set; }
int OwnerId { get; set; }
}
У меня есть экземпляр контроллера, который наследует DefaultController
:
public class WorkflowController : DefaultController<Workflow>
{
}
Workflow
наследует BaseEntity
, который реализует IBaseEntity
.
Теперь, внутри моего фильтра действий, с точки зрения кода, невозможно узнать, на каком контроллере выполняется запрос, поэтому я пытаюсь понизить его до DefaultController
public class AddHeaders : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var defaultControllerGenericType = controller.GetType().BaseType.GenericTypeArguments.FirstOrDefault();
//this retrieve with which type DefaultController was initiated with...
var controller = filterContext.Controller as DefaultController<BaseEntity>;
//this returns null...
var controller2 = filterContext.Controller as DefaultController<IBaseEntity>;
//this does so as well.
}
}
Iя пытался использовать defaultControllerGenericType
, но я нигде не могу передать его, или, по крайней мере, мне не хватает правильного синтаксиса.
Есть ли способ сделать это?