public virtual void ExecTypedFilters(Dictionary<Type, ITypedFilter> typedFilters,
IRequest req, IResponse res, object dto)
{
if (typedFilters.Count == 0) return;
ITypedFilter typedFilter;
var dtoType = dto.GetType();
typedFilters.TryGetValue(dtoType, out typedFilter);
if (typedFilter != null)
{
typedFilter.Invoke(req, res, dto);
if (res.IsClosed) return;
}
var dtoInterfaces = dtoType.GetTypeInterfaces();
foreach (var dtoInterface in dtoInterfaces)
{
typedFilters.TryGetValue(dtoInterface, out typedFilter);
if (typedFilter != null)
{
typedFilter.Invoke(req, res, dto);
if (res.IsClosed) return;
}
}
}