public static ILeoSelector <TVal> Select <TVal>(this ILeoVisitor visitor, Func <string, object, LeoMember, TVal> loopFunc) { if (visitor is null) { throw new ArgumentNullException(nameof(visitor)); } var rel = (ICoreVisitor)visitor; if (rel.LiteMode == LvMode.LITE) { throw new InvalidOperationException("Lite mode visitor has no Member handler."); } return(new LeoSelector <TVal>(rel.Owner, rel.ExposeLazyMemberHandler(), loopFunc)); }
public static ILeoLooper <T> ForEach <T>(this ILeoVisitor <T> visitor, Action <LeoLoopContext> loopAct) { if (visitor is null) { throw new ArgumentNullException(nameof(visitor)); } var rel = (ICoreVisitor <T>)visitor; if (rel.LiteMode == LvMode.LITE) { throw new InvalidOperationException("Lite mode visitor has no Member handler."); } return(new LeoLooper <T>(rel.Owner, rel.ExposeLazyMemberHandler(), loopAct)); }
public static ILeoRepeater <T> ForRepeat <T>(this ILeoVisitor <T> visitor) { if (visitor is null) { throw new ArgumentNullException(nameof(visitor)); } if (visitor.IsStatic) { return(new EmptyRepeater <T>()); } var rel = (ICoreVisitor <T>)visitor; if (rel.ExposeHistoricalContext() is null) { return(new EmptyRepeater <T>()); } return(new LeoRepeater <T>(rel.ExposeHistoricalContext())); }
public static bool TryRepeatAs <TObj>(this ILeoVisitor visitor, IDictionary <string, object> keyValueCollections, out TObj result) { result = default; var ret = visitor.TryRepeat(keyValueCollections, out var val); if (!ret) { return(false); } try { result = (TObj)val; return(true); } catch { return(false); } }
public static bool TryRepeatAs <TObj>(this ILeoVisitor visitor, object instance, out TObj result) { result = default; var ret = visitor.TryRepeat(instance, out var val); if (!ret) { return(false); } try { result = (TObj)val; return(true); } catch { return(false); } }
public static bool TryRepeat <T>(this ILeoVisitor <T> visitor, IDictionary <string, object> keyValueCollections, out T result) { if (visitor is null) { throw new ArgumentNullException(nameof(visitor)); } result = default; if (visitor.IsStatic) { return(false); } var rel = (ICoreVisitor <T>)visitor; if (rel.ExposeHistoricalContext() is null) { return(false); } result = rel.ExposeHistoricalContext().Repeat(keyValueCollections); return(true); }
public static bool TryRepeat <T>(this ILeoVisitor <T> visitor, T instance, out T result) { if (visitor is null) { throw new ArgumentNullException(nameof(visitor)); } result = default; if (visitor.IsStatic) { return(false); } var rel = (ICoreVisitor <T>)visitor; if (rel.ExposeHistoricalContext() is null) { return(false); } result = rel.ExposeHistoricalContext().Repeat(instance); return(true); }
public static Dictionary <string, object> ToDictionary <T>(this ILeoVisitor <T> visitor) { if (visitor is null) { throw new ArgumentNullException(nameof(visitor)); } var val = new Dictionary <string, object>(); var rel = (ICoreVisitor <T>)visitor; if (rel.LiteMode == LvMode.LITE) { throw new InvalidOperationException("Lite mode visitor has no Member handler."); } var lazyHandler = rel.ExposeLazyMemberHandler(); foreach (var name in lazyHandler.Value.GetNames()) { val[name] = visitor.GetValue(name); } return(val); }
public static bool TryRepeatAs <T>(this ILeoVisitor <T> visitor, IDictionary <string, object> keyValueCollections, out T result) { result = default; return(visitor.TryRepeat(keyValueCollections, out result)); }
public static bool TryRepeatAs <T>(this ILeoVisitor <T> visitor, T instance, out T result) { result = default; return(visitor.TryRepeat(instance, out result)); }
public LeoSelector(ILeoVisitor visitor, Lazy <MemberHandler> memberHandler, Func <LeoLoopContext, TVal> loopFunc) { _visitor = visitor ?? throw new ArgumentNullException(nameof(visitor)); _memberHandler = memberHandler ?? throw new ArgumentNullException(nameof(memberHandler)); _context = new InternalLeoSelectingContext <TVal>(loopFunc); }
public static T Create <T>(IDictionary <string, object> keyValueCollections, out ILeoVisitor <T> visitor, AlgorithmKind kind = AlgorithmKind.Precision) { visitor = LeoVisitorFactory.Create <T>(keyValueCollections, kind); return(visitor.Instance); }
public static object Create(Type type, IDictionary <string, object> keyValueCollections, out ILeoVisitor visitor, AlgorithmKind kind = AlgorithmKind.Precision) { visitor = LeoVisitorFactory.Create(type, keyValueCollections, kind); return(visitor.Instance); }
public ValueSetter(ILeoVisitor visitor, string name) { _visitor = visitor; _setter = val => visitor.SetValue(name, val); }
public ValueGetter(ILeoVisitor visitor, string name) { _visitor = visitor; _getter = () => visitor.GetValue(name); }
public LeoLooper(ILeoVisitor visitor, Lazy <MemberHandler> memberHandler, Action <LeoLoopContext> loopAct) { _visitor = visitor ?? throw new ArgumentNullException(nameof(visitor)); _memberHandler = memberHandler ?? throw new ArgumentNullException(nameof(memberHandler)); _context = new InternalLeoLoopingContext(loopAct); }