Пример #1
0
        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));
        }
Пример #2
0
 public object this[string key]
 {
     get
     {
         if (_dict.Value.TryGetValue(key, out object value))
         {
             return(value);
         }
         throw PtixedException.ColumnNotFound(key);
     }
 }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
            }
        }