public ISqlConverter CreateConverter() { var ctor = _type.GetConstructor(_args.Select(x => x.GetType()).ToArray()); if (ctor == null) { throw PtixedException.MissingImplementation(_type, ".ctor"); } return((ISqlConverter)ctor.Invoke(_args)); }
public object this[string key] { get { if (_dict.Value.TryGetValue(key, out object value)) { return(value); } throw PtixedException.ColumnNotFound(key); } }
public static object Execute(Expression expr) { switch (expr) { case ConstantExpression ce: return(ce.Value); case MemberExpression me: var owner = Execute(me.Expression); return(GetValue(me.Member, owner)); default: throw PtixedException.InvalidExpression(expr); } }
public static object GetValue(MemberInfo member, object owner) { var accessor = TypeAccessor.Get(member.DeclaringType); switch (member) { case FieldInfo fi: return(accessor[owner, fi]); case PropertyInfo pi: return(accessor[owner, pi]); default: throw PtixedException.InvalidExpression(member); } }