public static void EnterNode <T>(INode node, ref T registry, Func <T> factory) where T : class, ILayeredNameRegistry { EnterNodeRegistryAction action = EnterNode(node, registry); CreateRegistry(action, ref registry, factory); registry?.AddLayer(node as IScope); }
public static void CreateRegistry <T>(EnterNodeRegistryAction action, ref T registry, Func <T> factory) where T : class, INameRegistry { if (action == EnterNodeRegistryAction.Nullify) { registry = null; } else if (action == EnterNodeRegistryAction.CreateNew) { registry = factory(); } else if (action != EnterNodeRegistryAction.None) { throw new Exception(); } }