/src/LinFu.AOP/FieldFilterAdapter.cs

http://github.com/philiplaureano/LinFu · C# · 35 lines · 18 code · 4 blank · 13 comment · 0 complexity · 135dc83054e9c5357067b013b7434156 MD5 · raw file

  1. using System;
  2. using LinFu.AOP.Cecil.Interfaces;
  3. using Mono.Cecil;
  4. namespace LinFu.AOP.Cecil
  5. {
  6. /// <summary>
  7. /// Represents an adapter class that maps a functor to an <see cref="IFieldFilter" /> instance.
  8. /// </summary>
  9. public class FieldFilterAdapter : IFieldFilter
  10. {
  11. private readonly Func<FieldReference, bool> _filter;
  12. /// <summary>
  13. /// Initializes a new instance of the <see cref="FieldFilterAdapter" /> class.
  14. /// </summary>
  15. /// <param name="filter">The field filter.</param>
  16. public FieldFilterAdapter(Func<FieldReference, bool> filter)
  17. {
  18. _filter = filter;
  19. }
  20. /// <summary>
  21. /// Determines whether or not a particular field get or set should be intercepted.
  22. /// </summary>
  23. /// <param name="hostMethod">The host method.</param>
  24. /// <param name="targetField">The target field.</param>
  25. /// <returns>Returns <c>true</c> if the field should be intercepted; otherwise, it will return <c>false</c>.</returns>
  26. public bool ShouldWeave(MethodReference hostMethod, FieldReference targetField)
  27. {
  28. return _filter(targetField);
  29. }
  30. }
  31. }