public static Impl FindImpl(IGeneratedStore store) { while (store?.Parent != null) { store = store.Parent; // walk to the top of the tree } return(store?.Impl); }
public static void ImplTakeRead(IGeneratedStore s) => FindImpl(s).TakeRead();
public static void ImplInvokeChanged(IGeneratedStore s) => FindImpl(s).InvokeChanged();
public static void ImplSignalChanged(IGeneratedStore s) => FindImpl(s).SignalChanged();
public static ReaderWriterLockSlim ImplGetWriteSyncObject(IGeneratedStore s) => FindImpl(s)?.WriteSyncObject;
public static WaitHandle ImplGetSyncObject(IGeneratedStore s) => FindImpl(s).SyncObject;
public Impl(IGeneratedStore store) => generated = store;
public static void ImplWriteTo(IGeneratedStore s, ConfigProvider provider) => FindImpl(s).WriteTo(provider);
public static void ImplReadFrom(IGeneratedStore s, ConfigProvider provider) => FindImpl(s).ReadFrom(provider);
public static IDisposable ImplChangeTransaction(IGeneratedStore s, IDisposable nest) => FindImpl(s).ChangeTransaction(nest);
public static void ImplReleaseWrite(IGeneratedStore s) => FindImpl(s).ReleaseWrite();
public static void ImplTakeWrite(IGeneratedStore s) => FindImpl(s).TakeWrite();
public static void ImplReleaseRead(IGeneratedStore s) => FindImpl(s).ReleaseRead();
private static IConfigStore Create(Type type, IGeneratedStore parent) => GetCreator(type)(parent);
internal static T Create <T>(IGeneratedStore parent) where T : class => (T)Create(typeof(T), parent);