Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using Lucene.Net.Index;
- namespace Lucene.Net.Extensions
- {
- public class Disposable<T> : IDisposable
- {
- public Disposable() { }
- public Disposable(T entity, Action<T> disposeAction)
- {
- Entity = entity;
- DisposeAction = disposeAction;
- }
- public T Entity { get; set; }
- public Action<T> DisposeAction { get; set; }
- public void Dispose()
- {
- if (default(Action<T>) != DisposeAction)
- DisposeAction(Entity);
- }
- }
- public static class DisposableExtensions
- {
- public static Disposable<T> AsDisposable<T>(this T entity, Action<T> disposeAction)
- {
- return new Disposable<T>(entity, disposeAction);
- }
- }
- public class LuceneDisposableExample
- {
- public void Example()
- {
- string pathToIndex = @"C:\lucene\example\index";
- using (var disposableReader = IndexReader.Open(pathToIndex, true).AsDisposable(a => a.Close()))
- {
- var reader = disposableReader.Entity;
- // .. whatever you want here...
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment