FilterAttributeCache.cs 895 B

123456789101112131415161718192021222324252627
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Reflection;
  5. using System.Threading;
  6. using ServiceStack;
  7. namespace ServiceStack.Support.WebHost
  8. {
  9. public static class FilterAttributeCache
  10. {
  11. public static MediaBrowser.Model.Services.IHasRequestFilter[] GetRequestFilterAttributes(Type requestDtoType)
  12. {
  13. var attributes = requestDtoType.AllAttributes().OfType<MediaBrowser.Model.Services.IHasRequestFilter>().ToList();
  14. var serviceType = ServiceStackHost.Instance.Metadata.GetServiceTypeByRequest(requestDtoType);
  15. if (serviceType != null)
  16. {
  17. attributes.AddRange(serviceType.AllAttributes().OfType<MediaBrowser.Model.Services.IHasRequestFilter>());
  18. }
  19. attributes.Sort((x,y) => x.Priority - y.Priority);
  20. return attributes.ToArray();
  21. }
  22. }
  23. }