Guest User

Untitled

a guest
Jun 21st, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. using System;
  2. using Lucene.Net.Index;
  3.  
  4. namespace Lucene.Net.Extensions
  5. {
  6. public class Disposable<T> : IDisposable
  7. {
  8. public Disposable() { }
  9. public Disposable(T entity, Action<T> disposeAction)
  10. {
  11. Entity = entity;
  12. DisposeAction = disposeAction;
  13. }
  14.  
  15. public T Entity { get; set; }
  16. public Action<T> DisposeAction { get; set; }
  17.  
  18. public void Dispose()
  19. {
  20. if (default(Action<T>) != DisposeAction)
  21. DisposeAction(Entity);
  22. }
  23.  
  24. }
  25.  
  26. public static class DisposableExtensions
  27. {
  28. public static Disposable<T> AsDisposable<T>(this T entity, Action<T> disposeAction)
  29. {
  30. return new Disposable<T>(entity, disposeAction);
  31. }
  32. }
  33.  
  34. public class LuceneDisposableExample
  35. {
  36. public void Example()
  37. {
  38. string pathToIndex = @"C:\lucene\example\index";
  39.  
  40. using (var disposableReader = IndexReader.Open(pathToIndex, true).AsDisposable(a => a.Close()))
  41. {
  42. var reader = disposableReader.Entity;
  43.  
  44. // .. whatever you want here...
  45. }
  46. }
  47. }
  48. }
Add Comment
Please, Sign In to add comment