/// <summary> /// For display /// </summary> /// <returns></returns> public virtual string Render() { var sb = new ConsoleStringBuilderInterlaced(); Render(sb); return(sb.ToString()); }
/// <summary> /// Returns a <see cref="System.String" /> that represents this instance. /// </summary> /// <returns> /// A <see cref="System.String" /> that represents this instance. /// </returns> public override string ToString() { var sb = new ConsoleStringBuilderInterlaced(); Render(sb); return(sb.ToString()); }
/// <summary> /// For display /// </summary> /// <returns></returns> internal virtual void Render(ConsoleStringBuilderInterlaced sb) { sb .AppendInterlacedLine("new GenericQueryPart {") .Up() .AppendInterlacedLine("QueryCommand = \"{0}\",", Prefix) .AppendInterlacedLine("Builder = \"{0}\",", Builder != null ? Builder.GetType().Name : "{NULL}") .AppendInterlaced("Parameter[{0}] = ", QueryParameters.Count()); if (QueryParameters.Any()) { sb.AppendInterlacedLine("{") .Up(); foreach (var queryParameter in QueryParameters.Cast <QueryParameter>()) { queryParameter.Render(sb); sb.AppendLine(","); } sb.Down() .AppendInterlacedLine("}"); } else { sb.AppendLine("{}"); } sb.Down() .AppendInterlaced("}"); //return string.Format("{{QueryCommand = {0}, Parameter = [{1}]}}", Prefix, paraString); }
public void Render(ConsoleStringBuilderInterlaced sb) { sb.AppendInterlaced("[") .Append($"{Name}") .Append("("); var result = RenderAssignments(); sb.Append(result).AppendLine(")]"); }
public void RenderProperty(ConsoleStringBuilderInterlaced sb, bool generateConfigMethod, bool notifyPropertysChanged) { var memberName = "_" + Char.ToLowerInvariant(Name[0]) + Name.Substring(1); if (notifyPropertysChanged) { sb.AppendInterlacedLine( $"private {Type.GetTypeName()} {memberName};"); } if (!generateConfigMethod) { foreach (var attributeInfo in Attributes) { attributeInfo.Render(sb); } } else { foreach (var attributeInfo in Attributes.Where(e => e.DoesNotSupportDbConfigApi)) { attributeInfo.Render(sb); } } sb.AppendInterlaced("public "); if (ForeignKey != null) { sb.Append("virtual "); } sb.Append($"{Type.GetTypeName()}"); sb.Append($" {Name} "); if (!notifyPropertysChanged) { sb.AppendLine($" {{ get; set; }}"); } else { sb.AppendLine($""); sb.AppendInterlacedLine("{") .Up() .AppendInterlacedLine($"get {{ return {memberName}; }}") .AppendInterlacedLine("set") .AppendInterlacedLine("{") .Up() .AppendInterlacedLine($"{memberName} = value;") .AppendInterlacedLine("SendPropertyChanged();") .Down() .AppendInterlacedLine("}") .Down() .AppendInterlacedLine("}"); } }
internal void Render(ConsoleStringBuilderInterlaced sb) { sb.AppendInterlacedLine("new IQueryContainer {") .Up() .AppendInterlacedLine("AllowParamterRenaming = {0},", AllowParamterRenaming.ToString().ToLower()) .AppendInterlacedLine("AutoParameterCounter = {0},", AutoParameterCounter) .AppendInterlacedLine("QueryDebugger = ") .Insert(new QueryDebugger(Compile(), AccessLayer.Database).Render) .AppendInterlacedLine("Parts[{0}] = ", Parts.Count) .AppendInterlacedLine("{") .Up(); foreach (var genericQueryPart in Parts) { genericQueryPart.Render(sb); sb.AppendLine(","); } sb.Down() .AppendInterlacedLine("}") .Down() .AppendInterlaced("}"); }
public void RenderAssignment(ConsoleStringBuilderInterlaced sb, string readerName, string targetName) { if (IsRest) { return; } DbName = $"\"{GetDbName()}\""; var readFromTarget = $"reader[{DbName}]"; if (IsXml) { readFromTarget = $"(string)reader[{DbName}]"; if (!string.IsNullOrWhiteSpace(ValueConverterType)) { readFromTarget = $"new {ValueConverterType}().{nameof(IValueConverter.Convert)}({readFromTarget});"; } if (Type.IsList) { var pocoName = Type.GenericTypes[0].Name; readFromTarget = $@"new {nameof(NonObservableDbCollection<object>)}<{pocoName}>( {nameof(XmlDataRecord)}.{nameof(XmlDataRecord.TryParse)}( xmlStream: {readFromTarget}, target: {pocoName}, single: false) .{nameof(XmlDataRecord.CreateListOfItems)}() .Select(item => {pocoName} .{nameof(DbConfigHelper.GetClassInfo)}() .{nameof(DbAccessLayerHelper.SetPropertiesViaReflection)}(reader: {nameof(EagarDataRecord)}.{nameof(EagarDataRecord.WithExcludedFields)}(item))))" ; } else { readFromTarget = $"{nameof(XmlDataRecord)}.{nameof(XmlDataRecord.TryParse)}" + $"(xmlStream: (string){readFromTarget}, " + $"target: {Type.Name}, " + "single: true)"; } } else if (ForeignKey != null) { var varName = $"readersOf{Name}"; if (ForeignKey.DirectionFromParent) { sb.AppendInterlacedLine( $"var {varName} = (({nameof(EagarDataRecord)}[])reader[{DbName}]);"); var realType = Type.GenericTypes.FirstOrDefault(); readFromTarget = $@"{varName} == null ? null : new {Type.GetTypeName()}({varName}.Select(item => (({realType.Name})(typeof({realType.Name}).{nameof(DbConfigHelper.GetClassInfo)}().{nameof(DbAccessLayerHelper.SetPropertiesViaReflection)}(reader: item)))))"; } else { sb.AppendInterlacedLine( $"var {varName} = (({nameof(EagarDataRecord)}[])reader[{DbName}])?.FirstOrDefault();"); readFromTarget = $@"{varName} == null ? null : (({Type.GetTypeName()})(typeof({Type.GetTypeName()}).{nameof(DbConfigHelper.GetClassInfo)}().{nameof(DbAccessLayerHelper.SetPropertiesViaReflection)}(reader: {varName})))"; } } else { if (!string.IsNullOrWhiteSpace(ValueConverterType)) { readFromTarget = $"new {ValueConverterType}().{nameof(IValueConverter.Convert)}({readFromTarget});"; } var typeAssignment = $"{Type.GetTypeName()}"; readFromTarget = $"({typeAssignment}){readFromTarget}"; } sb.AppendInterlacedLine( $"{targetName}.{Name} = {readFromTarget};"); }
/// <summary> /// /// </summary> /// <returns></returns> public string RenderPocoClass(bool notifyPropertysChanged = false) { var sb = new ConsoleStringBuilderInterlaced(); if (GenerateConfigMethod) { NamespaceImports.Add(typeof(ConfigurationResolver <>).Namespace); } if (notifyPropertysChanged) { NamespaceImports.Add(typeof(INotifyPropertyChanged).Namespace); NamespaceImports.Add(typeof(CallerMemberNameAttribute).Namespace); } NamespaceImports.Add(typeof(EagarDataRecord).Namespace); NamespaceImports.Add(typeof(GeneratedCodeAttribute).Namespace); NamespaceImports.Add(typeof(DbCollection <>).Namespace); sb.AppendInterlacedLine("//------------------------------------------------------------------------------"); sb.AppendInterlacedLine("// <auto-generated>"); sb.AppendInterlacedLine("// This code was generated by a tool."); sb.AppendInterlacedLine("// Runtime Version:2.0.50727.42"); sb.AppendInterlacedLine("// Changes to this file may cause incorrect behavior and will be lost if"); sb.AppendInterlacedLine("// the code is regenerated."); sb.AppendInterlacedLine("// </auto-generated>"); sb.AppendInterlacedLine("//------------------------------------------------------------------------------"); foreach (var namespaceImport in NamespaceImports) { sb.AppendLine($"using {namespaceImport};"); } sb.AppendLine(); sb.AppendLine("namespace " + Namespace); sb.AppendLine("{"); sb.Up(); sb.AppendLine(); foreach (var headerLine in CompilerHeader) { sb.AppendInterlacedLine($"//{headerLine}"); } sb.AppendLine(); if (!GenerateConfigMethod) { foreach (var attributeInfo in Attributes) { attributeInfo.Render(sb); } } if (GeneratedCodeAttribute != null) { sb.AppendInterlacedLine( $"[{nameof(GeneratedCodeAttribute)}(tool: \"{GeneratedCodeAttribute.Tool}\", version: \"{GeneratedCodeAttribute.Version}\")]"); } sb.AppendInterlaced("public partial class " + ClassName); if (!string.IsNullOrWhiteSpace(Inherts) || notifyPropertysChanged) { sb.Append($": {Inherts}"); if (notifyPropertysChanged) { if (!string.IsNullOrWhiteSpace(Inherts)) { sb.Append(", "); } sb.Append(nameof(INotifyPropertyChanged)); } } sb.AppendLine(); sb.AppendInterlacedLine("{"); sb.Up(); sb.AppendInterlacedLine($"public {ClassName}() {{}}"); if (GenerateConstructor && !GenerateFactory) { var readerName = "reader"; sb.AppendInterlacedLine($"public {ClassName}({nameof(EagarDataRecord)} {readerName}) "); sb.AppendInterlacedLine("{").Up(); foreach (var propertyInfo in Properties) { propertyInfo.RenderAssignment(sb, readerName, "this"); } sb.Down().AppendInterlacedLine("}"); } if (!IsSuperClass) { foreach (var propertyInfo in Properties) { propertyInfo.RenderProperty(sb, GenerateConfigMethod, notifyPropertysChanged); } } if (GenerateFactory) { var readerName = "reader"; sb.AppendInterlacedLine($"public static {ClassName} Factory({nameof(EagarDataRecord)} {readerName})"); sb.AppendInterlacedLine("{").Up(); var targetName = "super"; sb.AppendInterlacedLine($"var {targetName} = new {ClassName}();"); foreach (var propertyInfo in Properties) { propertyInfo.RenderAssignment(sb, readerName, targetName); } sb.AppendInterlacedLine($"return {targetName};"); sb.Down().AppendInterlacedLine("}"); } if (GenerateConfigMethod) { var configArgument = string.Format("ConfigurationResolver<{0}>", ClassName); var configName = "config"; string[] eventNames = { "BeforeConfig()", "AfterConfig()", $"BeforeConfig({configArgument} {configName})", $"AfterConfig({configArgument} {configName})" }; foreach (var eventName in eventNames) { sb.AppendInterlacedLine($"static partial void {eventName};"); } sb.AppendInterlacedLine($"[{nameof(ConfigMehtodAttribute)}]"); sb.AppendInterlacedLine($"public static void Configuration({configArgument} {configName})"); sb.AppendInterlacedLine("{"); sb.Up(); sb.AppendInterlacedLine("BeforeConfig();"); sb.AppendInterlacedLine($"BeforeConfig({configName});"); if (!GenerateConstructor) { sb.AppendInterlacedLine( $"config.{nameof(ConfigurationResolver<object>.SetFactory)}" + "(" + $"{ClassName}.Factory, " + "true" + ");"); } foreach (var propertyInfoAttribute in Attributes) { sb.AppendInterlacedLine( $"config.{nameof(ConfigurationResolver<object>.SetClassAttribute)}" + "(" + $"new {propertyInfoAttribute.Name}({propertyInfoAttribute.RenderAssignments()})" + ");"); } foreach (var propertyInfo in Properties) { foreach (var propertyInfoAttribute in propertyInfo.Attributes) { sb.AppendInterlacedLine( $"config.{nameof(ConfigurationResolver<object>.SetPropertyAttribute)}" + "(" + $"s => s.{propertyInfo.Name}" + ", " + $"new {propertyInfoAttribute.Name}({propertyInfoAttribute.RenderAssignments()})" + ");"); } } sb.AppendInterlacedLine($"AfterConfig({configName});"); sb.AppendInterlacedLine("AfterConfig();"); sb.Down(); sb.AppendInterlacedLine("}"); } if (notifyPropertysChanged) { sb.AppendInterlacedLine($"#region {nameof(INotifyPropertyChanged)}"); sb.AppendInterlacedLine( $"public event {nameof(PropertyChangedEventHandler)} {nameof(INotifyPropertyChanged.PropertyChanged)};"); sb.AppendInterlacedLine(""); sb.AppendInterlacedLine("protected virtual void SendPropertyChanged([CallerMemberName] string propertyName = null)"); sb.AppendInterlacedLine("{").Up(); sb.AppendInterlacedLine("PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));"); sb.Down().AppendInterlacedLine("}"); sb.AppendInterlacedLine(""); sb.AppendInterlacedLine("#endregion"); } sb.Down(); sb.AppendInterlacedLine("}"); sb.Down(); sb.AppendLine("}"); using (var writer = new StringWriter()) { sb.WriteToSteam(writer, wrapper => { }, () => { }); var stringBuilder = writer.GetStringBuilder(); return(stringBuilder.ToString()); } }