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); } }
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); }
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}"); }
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)); }
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()); }
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}"); }
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); }
/// <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); }
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); } }
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); }
/// <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; }
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()}不支持的主键类型"); }
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); } } }
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); }
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)); }
public BaseBuilder(IDbConnection conn) { _conn = conn; _sqlTranslator = new SqlTranslator <T>(); TableName = DefaultResolver.ResolveTableName(type); }