static Exception _TryParse(string text,
                                   IServiceProvider serviceProvider,
                                   out TypeReference result)
        {
            result = null;
            if (text == null)
            {
                return(new ArgumentNullException("type"));
            }
            text = text.Trim();

            if (text.Length == 0)
            {
                return(Failure.AllWhitespace("text"));
            }

            serviceProvider = serviceProvider ?? ServiceProvider.Root;

            Type builtIn;

            if (builtInNames.TryGetValue(text, out builtIn))
            {
                result = FromType(builtIn);
                return(null);
            }

            if (text.Contains(":") || text.Contains("{"))
            {
                try {
                    QualifiedName qn = QualifiedName.Parse(text, serviceProvider);
                    result = new TypeReference(text, new QualifiedNameResolver(qn));
                    return(null);
                } catch (FormatException f) {
                    return(Failure.NotParsable("text", typeof(TypeReference), f));
                }
            }

            string[] s        = text.Split(new [] { ',' }, 2);
            string   typeName = s[0];

            if (s.Length == 2)
            {
                AssemblyName assemblyName = null;
                try {
                    assemblyName = new AssemblyName(s[1]);
                } catch (Exception ex) {
                    return(Failure.NotParsable("text", typeof(TypeReference), ex));
                }

                var resolveThunk = new DefaultResolver(assemblyName, typeName);
                result = new TypeReference(text, resolveThunk);
                return(null);
            }
            else
            {
                var resolveThunk = new SlowResolver(typeName);
                result = new TypeReference(text, resolveThunk);
                return(null);
            }
        }
Beispiel #2
0
        public bool TryGetValue(object key, out object value)
        {
            if (!_values.TryGetValue(key, out value))
            {
                try
                {
                    _resolvingDepth++;

                    if (_resolvingDepth <= FeatureConfiguration.Xaml.MaxRecursiveResolvingDepth)
                    {
                        // This prevents a stack overflow while looking for a
                        // missing resource in generated xaml code.

                        value = DefaultResolver?.Invoke(key.ToString());
                    }
                }
                finally
                {
                    _resolvingDepth--;
                }

                return(value != null);
            }

            return(true);
        }
        public bool TryGetValue(object key, out object value)
        {
            if (!_values.TryGetValue(key, out value))
            {
                try
                {
                    if (!_isResolving)
                    {
                        // This prevents a stack overflow while looking for a
                        // missing resource in generated xaml code.
                        _isResolving = true;

                        value = DefaultResolver?.Invoke(key.ToString());
                    }
                }
                finally
                {
                    _isResolving = false;
                }

                return(value != null);
            }

            return(true);
        }
Beispiel #4
0
        public DeleteBuilder(IDbConnection conn, object id) : base(conn)
        {
            var keyCol    = DefaultResolver.ResolveKey(typeof(T));
            var paramName = _sqlTranslator.ParamIndex;

            _sqlTranslator.Params.Add(paramName, id);
            WhereBuilder.Append($" WHERE {keyCol.ColumnName}={paramName}");
        }
Beispiel #5
0
        public void Resolve_ShouldCreateInstanceByTypeOfType()
        {
            var resolver = new DefaultResolver();
            var instance = resolver.Resolve(typeof(AppleException));

            instance.Should().NotBeNull();
            instance.Should().BeOfType <AppleException>();
        }
        public void WorksCorrectlyWithNullValues()
        {
            var resolver = new DefaultResolver <object>(NullLogger <CommandLineParser> .Instance, ServiceProvider);

            Assert.False(resolver.CanResolve((ArgumentModel)null));
            Assert.False(resolver.CanResolve((string)null));
            Assert.Null(resolver.Resolve((ArgumentModel)null));
            Assert.Null(resolver.Resolve((string)null));
        }
Beispiel #7
0
        public T Get(object id)
        {
            var keyCol    = DefaultResolver.ResolveKey(Type);
            var paramName = _sqlTranslator.ParamIndex;

            _sqlBuilder.AppendAnd($"{keyCol.ColumnName}={paramName}");
            _sqlTranslator.Params.Add(paramName, id);
            return(this.Take(1).ToList().FirstOrDefault());
        }
Beispiel #8
0
        private void AppendKeyWhere(T entity)
        {
            var col       = DefaultResolver.ResolveKey(type);
            var paramName = GetNewParamter();
            var sql       = $"{col.ColumnName}={paramName}";

            SetParamter(paramName, col.PropertyInfo.GetValue(entity, null));
            WhereBuilder.Append(WhereBuilder.Length > 0 ? $" AND {sql}" : $" WHERE {sql}");
        }
Beispiel #9
0
 public QueryOver(IDbConnection conn)
 {
     Type           = typeof(T);
     _sqlTranslator = new SqlTranslator <T>();
     _sqlBuilder    = new SqlBuilder()
     {
         TableName      = DefaultResolver.ResolveTableName(Type),
         DefaultColumns = DefaultResolver.ResolveColumnNames(Type)
     };
     _conn = conn;
 }
        public bool TryGetValue(object key, out object value)
        {
            if (!_values.TryGetValue(key, out value))
            {
                value = DefaultResolver?.Invoke(key.ToString());

                return(value != null);
            }

            return(true);
        }
Beispiel #11
0
        /// <summary>
        /// 打开包裹得到协议
        /// </summary>
        /// <param name="package"></param>
        /// <returns></returns>
        public IProtocolInfo Open(IPackageInfo package)
        {
            IProtocolInfo result = null;

            string WrappedText = package.ToString();

            //test
            Console.WriteLine("WrappedText: {0}", WrappedText);

            result = DefaultResolver.ToEntity(WrappedText);

            return(result);
        }
        public object Lookup(object key)
        {
            object value;

            var keyName = key.ToString();

            if (!_values.TryGetValue(keyName, out value))
            {
                return(DefaultResolver?.Invoke(keyName));
            }

            return(value);
        }
Beispiel #13
0
        public InsertBuilder(IDbConnection conn, T entity) : base(conn)
        {
            var properties = DefaultResolver.ResolveProperties(type, true);

            foreach (var p in properties)
            {
                var fieldName = DefaultResolver.ResolveColumnName(p);
                FieldBuilder.Append(FieldBuilder.Length > 0 ? $",{fieldName}" : fieldName);
                var paramterName = GetNewParamter();
                SetParamter(paramterName, p.GetValue(entity, null));
                ValueBuilder.Append(ValueBuilder.Length > 0 ? $",{paramterName}" : paramterName);
            }
        }
 public object GetService(Type serviceType)
 {
     try
     {
         return(ServiceRegistry.Get(serviceType));
     }
     catch (Exception ex)
     {
         Logger.Warning("Failed to get service of type {0}, falling back to DefaultResolver: {1}", serviceType.Name, ex.Message);
         object defaultInstance = DefaultResolver.GetService(serviceType);
         ServiceRegistry.Set(serviceType, defaultInstance);
         return(defaultInstance);
     }
 }
Beispiel #15
0
        public UpdateBuilder(IDbConnection conn, T entity) : base(conn)
        {
            var properties = DefaultResolver.ResolveProperties(type, true);

            foreach (var p in properties)
            {
                var fieldName    = DefaultResolver.ResolveColumnName(p);
                var paramterName = GetNewParamter();
                var sql          = $"{fieldName}={paramterName}";
                SetFieldBuilder.Append(SetFieldBuilder.Length > 0 ? $",{sql}" : $" SET {sql}");
                SetParamter(paramterName, p.GetValue(entity, null));
            }
            AppendKeyWhere(entity);
        }
Beispiel #16
0
        /// <summary>
        /// 将协议封装成包裹
        /// </summary>
        /// <param name="protocol"></param>
        /// <returns></returns>
        public IPackageInfo Seal(IProtocolInfo protocol)
        {
            PackageInfo info = new PackageInfo();

            info.Prefix       = Encoding.UTF8.GetBytes(PackageSetting.PrefixString);
            info.BodyEncoding = PackageSetting.Encoding;

            string protocolPlainText = DefaultResolver.ToText(protocol);

            info.SetBodyFromString(protocolPlainText);

            info.BodyLength = BitConverter.GetBytes(Convert.ToInt32(info.Body.Length));

            return(info);
        }
        public void GetNameWithDefaultResolver_Success()
        {
            var resolver  = new DefaultResolver();
            var dummyType = typeof(MemberInfoDummy);

            var value1Name   = dummyType.GetProperty(nameof(MemberInfoDummy.Value1)).GetName(resolver);
            var value2Name   = dummyType.GetField(nameof(MemberInfoDummy.Value2)).GetName(resolver);
            var value3Name   = dummyType.GetProperty(nameof(MemberInfoDummy.Value3)).GetName(resolver);
            var value4Name   = dummyType.GetProperty(nameof(MemberInfoDummy.Value4)).GetName(resolver);
            var subDummyName = dummyType.GetProperty(nameof(MemberInfoDummy.SubDummy)).GetName(resolver);

            Assert.Equal(nameof(MemberInfoDummy.Value1), value1Name);
            Assert.Equal(nameof(MemberInfoDummy.Value2), value2Name);
            Assert.Equal(nameof(MemberInfoDummy.Value3), value3Name);
            Assert.Equal(nameof(MemberInfoDummy.Value4), value4Name);
            Assert.Equal(nameof(MemberInfoDummy.SubDummy), subDummyName);
        }
        /// <summary>
        /// Construct a new <see cref="NodeDelegationWrapper"/>.
        /// </summary>
        /// <param name="innerNode">
        /// The <see cref="INode"/> to delegate to.
        /// </param>
        /// <param name="resolver">
        /// The resolver used to delegate <c>Resolve</c> calls.
        /// </param>
        /// <param name="nodeAdapter">
        /// The adapter that will adapt adapter candidate nodes returned be the
        /// <c>Resolve</c> and <c>ParentDirectory</c> methods.
        /// </param>
        protected NodeDelegationWrapper(INode innerNode, INodeResolver resolver, Converter <INode, INode> nodeAdapter)
            : base(innerNode)
        {
            if (resolver == null)
            {
                if (this.NodeType == NodeType.Directory)
                {
                    resolver = new DefaultResolver(this);
                }
                else
                {
                    resolver = new DefaultResolver(this);
                }
            }

            this.NodeResolver = resolver;
            this.NodeAdapter  = nodeAdapter;
        }
Beispiel #19
0
        public static object Save <T>(this IDbConnection conn, T entity)
        {
            var property = DefaultResolver.ResolveKeyProperty(typeof(T), out var increment);
            var value    = property.GetValue(entity, null);

            if (property.PropertyType == typeof(int))
            {
                if (Convert.ToInt32(value) > 0)
                {
                    Update(conn, entity);
                }
                else
                {
                    value = InsertAndGetId(conn, entity);
                }
                return(value);
            }
            throw new Exception($"{property.PropertyType.ToString()}不支持的主键类型");
        }
Beispiel #20
0
        public void InitDatabase()
        {
            var sql = $"SELECT TABLE_SCHEMA `Database`,TABLE_NAME TableName,COLUMN_NAME ColumnName,IS_NULLABLE IsNullable,DATA_TYPE DataType,CHARACTER_MAXIMUM_LENGTH Length, COLUMN_KEY ColumnKey FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA='{database}'";

            DbMetaDatas = conn.Query <DbMetaData>(sql).ToList();
            if (!ExistsDatabase())
            {
                CreateDatabase();
            }
            var tableTypes = Assembly.GetEntryAssembly().GetExportedTypes().Where(t => t.GetCustomAttribute <SqlTableAttribute>() != null);

            foreach (var tableType in tableTypes)
            {
                var dbTable = DefaultResolver.GetDbTable(tableType);
                if (!ExistsTable(dbTable.TableName))
                {
                    CreateTable(dbTable.TableName, dbTable.DbColumns);
                }
            }
        }
Beispiel #21
0
 private void Show(StringBuilder sb)
 {
     if (HasChildren)
     {
         sb.AppendFormat("({0} ", Type);
         foreach (var child in Children)
         {
             child.Show(sb);
         }
         sb.Append(')');
     }
     else
     {
         if (Token != null)
         {
             sb.AppendFormat("({0} {1})", Type, DefaultResolver.EncodeToken(Token));
         }
         else
         {
             sb.AppendFormat("({0})", Type);
         }
     }
 }
        public bool HasKey(object key)
        {
            var keyName = key.ToString();

            return(_values.ContainsKey(keyName) || DefaultResolver?.Invoke(keyName) != null);
        }
Beispiel #23
0
 public string VisitMemberAccess(MemberExpression expression)
 {
     return(DefaultResolver.ResolveColumnName((PropertyInfo)expression.Member));
 }
		/// <summary>
		/// Construct a new <see cref="NodeDelegationWrapper"/>.
		/// </summary>
		/// <param name="innerNode">
		/// The <see cref="INode"/> to delegate to.
		/// </param>
		/// <param name="resolver">
		/// The resolver used to delegate <c>Resolve</c> calls.
		/// </param>
		/// <param name="nodeAdapter">
		/// The adapter that will adapt adapter candidate nodes returned be the
		/// <c>Resolve</c> and <c>ParentDirectory</c> methods.
		/// </param>
		protected NodeDelegationWrapper(INode innerNode, INodeResolver resolver, Converter<INode, INode> nodeAdapter)
			: base(innerNode)
		{
			if (resolver == null)
			{
				if (this.NodeType == NodeType.Directory)
				{
					resolver = new DefaultResolver(this);
				}
				else
				{
					resolver = new DefaultResolver(this);
				}
			}

			this.NodeResolver = resolver;
			this.NodeAdapter = nodeAdapter;
		}
 public IEnumerable <object> GetServices(Type serviceType)
 {
     return(DefaultResolver.GetServices(serviceType));
 }
Beispiel #26
0
 public BaseBuilder(IDbConnection conn)
 {
     _conn          = conn;
     _sqlTranslator = new SqlTranslator <T>();
     TableName      = DefaultResolver.ResolveTableName(type);
 }