// ------------------------------------------------------------------------------
//
// 此代码由工具生成。
// 运行时版本: 17.0.0.0
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,这些更改将会丢失。
//
// ------------------------------------------------------------------------------
namespace VberAdmin.Templates.V3
{
using System.Linq;
using System.Text;
using System.Collections.Generic;
using System;
///
/// Class to produce the template output
///
#line 1 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")]
public partial class Service : ServiceBase
{
#line hidden
///
/// Create the template output
///
public virtual string TransformText()
{
this.Write(@"using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Abp.Application.Services.Dto;
using Abp.Auditing;
using Abp.Authorization;
using Abp.Domain.Repositories;
using Abp.Linq.Extensions;
using Abp.Runtime.Caching;
using IwbZeroCore.Auditing;
using IwbZeroCore.AppServiceBase;
using IwbZeroCore.Tools.Lambda;
using IwbZeroCore.Tools.StringModel;
using ");
#line 19 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ProjectName));
#line default
#line hidden
this.Write(".Authorization;\r\nusing ");
#line 20 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ApplicationNamespace));
#line default
#line hidden
this.Write(".Dto;\r\n\r\n");
#line 22 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
string auditLog=string.IsNullOrEmpty(Model.HtmlPageTitle) ? "" : ", AuditLog(\""+ Model.HtmlPageTitle +"\")" ;
#line default
#line hidden
this.Write("namespace ");
#line 25 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ApplicationNamespace));
#line default
#line hidden
this.Write("\r\n{\r\n [AbpAuthorize");
#line 27 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(auditLog));
#line default
#line hidden
this.Write("]\r\n public class ");
#line 28 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("AppService : IwbAsyncCurdAppServiceBase<");
#line 28 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write(", ");
#line 28 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("Dto, ");
#line 28 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.IdType));
#line default
#line hidden
this.Write(", IwbPagedRequestDto, ");
#line 28 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("CreateDto, ");
#line 28 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("UpdateDto >, I");
#line 28 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("AppService\r\n {\r\n public ");
#line 30 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("AppService(\r\n\t\t\tICacheManager cacheManager,\r\n\t\t\tIRepository<");
#line 32 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write(", ");
#line 32 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.IdType));
#line default
#line hidden
this.Write("> repository) : base(repository, \"");
#line 32 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ColumnPrimaryKey));
#line default
#line hidden
this.Write("\")\r\n {\r\n CacheManager = cacheManager;\r\n }\r\n\r\n pro" +
"tected override bool KeyIsAuto { get; set; } = false;\r\n\r\n #region CURD\r\n\r" +
"\n [AbpAuthorize(PermissionNames.Pages");
#line 41 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ParentPath));
#line default
#line hidden
#line 41 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("MgCreate)]\r\n public override async Task Create(");
#line 42 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("CreateDto input)\r\n {\r\n await CreateEntity(input);\r\n }\r\n\r" +
"\n [AbpAuthorize(PermissionNames.Pages");
#line 47 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ParentPath));
#line default
#line hidden
#line 47 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("MgUpdate)]\r\n public override async Task Update(");
#line 48 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("UpdateDto input)\r\n {\r\n await UpdateEntity(input);\r\n }\r\n\r" +
"\n [AbpAuthorize(PermissionNames.Pages");
#line 53 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ParentPath));
#line default
#line hidden
#line 53 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("MgDelete)]\r\n public override Task Delete(EntityDto<");
#line 54 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.IdType));
#line default
#line hidden
this.Write("> input)\r\n {\r\n return DeleteEntity(input);\r\n }\r\n\r\n " +
" [DisableAuditing]\r\n [AbpAuthorize(PermissionNames.Pages");
#line 60 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ParentPath));
#line default
#line hidden
#line 60 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("MgQuery)]\r\n public override async Task> GetAll(IwbPagedRequestDto input)
{
var query = CreateFilteredQuery(input);
query = ApplyFilter(query, input);
var totalCount = await AsyncQueryableExecuter.CountAsync(query);
query = ApplySorting(query, input);
query = ApplyPaging(query, input);
var entities = await AsyncQueryableExecuter.ToListAsync(query);
var dtoList = new PagedResultDto<");
#line 69 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write(@"Dto>(totalCount, entities.Select(MapToEntityDto).ToList());
return dtoList;
}
protected override IQueryable SelfSorting(IQueryable query, IwbPagedRequestDto input)
{
if (query is IQueryable<");
#line 76 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write(@"> queryable)
return (IQueryable)queryable.OrderByDescending(r => r.Id);
return query;
}
protected override IQueryable KeyWordFilter(IQueryable query, string keyword)
{
if (query is IQueryable<");
#line 83 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write(@"> queryable)
return (IQueryable)queryable.WhereIf(keyword.NotEmpty(), a => a.Name.Contains(keyword));
return query;
}
protected override List SelfFilter(List list)
{
var objList = new List();
//var search = list.FirstOrDefault(a => a.KeyField.ToLower() == ""alumnino"");
//if (search!=null)
//{
// var keyword = search.KeyWords;
// list.Remove(search);
//}
return objList;
}
#region GetEntity/Dto
///
/// 查询实体Dto
///
///
///
[DisableAuditing]
[AbpAuthorize(PermissionNames.Pages");
#line 110 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ParentPath));
#line default
#line hidden
#line 110 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("MgQuery)]\r\n public override async Task<");
#line 111 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("Dto> GetDto(EntityDto<");
#line 111 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.IdType));
#line default
#line hidden
this.Write(@"> input)
{
var entity = await GetEntity(input);
return MapToEntityDto(entity);
}
///
/// 查询实体Dto
///
///
///
[DisableAuditing]
[AbpAuthorize(PermissionNames.Pages");
#line 123 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ParentPath));
#line default
#line hidden
#line 123 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("MgQuery)]\r\n public override async Task<");
#line 124 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("Dto> GetDtoById(");
#line 124 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.IdType));
#line default
#line hidden
this.Write(@" id)
{
var entity = await GetEntityById(id);
return MapToEntityDto(entity);
}
///
/// 查询实体Dto(需指明自定义字段)
///
///
///
[DisableAuditing]
[AbpAuthorize(PermissionNames.Pages");
#line 136 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ParentPath));
#line default
#line hidden
#line 136 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("MgQuery)]\r\n public override async Task<");
#line 137 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write(@"Dto> GetDtoByNo(string no)
{
var entity = await GetEntityByNo(no);
return MapToEntityDto(entity);
}
///
/// 查询实体
///
///
///
[DisableAuditing]
[AbpAuthorize(PermissionNames.Pages");
#line 149 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ParentPath));
#line default
#line hidden
#line 149 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("MgQuery)]\r\n public override async Task<");
#line 150 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write("> GetEntity(EntityDto<");
#line 150 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.IdType));
#line default
#line hidden
this.Write(@"> input)
{
var entity = await GetEntityById(input.Id);
return entity;
}
///
/// 查询实体
///
///
///
[DisableAuditing]
[AbpAuthorize(PermissionNames.Pages");
#line 162 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ParentPath));
#line default
#line hidden
#line 162 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("MgQuery)]\r\n public override async Task<");
#line 163 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write("> GetEntityById(");
#line 163 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.IdType));
#line default
#line hidden
this.Write(@" id)
{
return await Repository.FirstOrDefaultAsync(a=>a.Id==id);
}
///
/// 查询实体(需指明自定义字段)
///
///
///
[DisableAuditing]
[AbpAuthorize(PermissionNames.Pages");
#line 174 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ParentPath));
#line default
#line hidden
#line 174 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.FileName));
#line default
#line hidden
this.Write("MgQuery)]\r\n public override async Task<");
#line 175 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write(@"> GetEntityByNo(string no)
{
//CheckGetPermission();
if (string.IsNullOrEmpty(KeyFiledName))
{
ThrowError(""NoKeyFieldName"");
}
return await base.GetEntityByNo(no);
}
#endregion
#region Hide
/////
///// 根据给定的创建 过滤查询.\r\n ///// \r\n ///// The input." +
"\r\n //protected override IQueryable<");
#line 193 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write(@"> CreateFilteredQuery(IwbPagedRequestDto input)
//{
// var query = Repository.GetAll();
// var pagedInput = input as IIwbPagedRequest;
// if (pagedInput == null)
// {
// return query;
// }
// if (!string.IsNullOrEmpty(pagedInput.KeyWords))
// {
// object keyWords = pagedInput.KeyWords;
// LambdaObject obj = new LambdaObject()
// {
// FieldType = (LambdaFieldType)pagedInput.FieldType,
// FieldName = pagedInput.KeyField,
// FieldValue = keyWords,
// ExpType = (LambdaExpType)pagedInput.ExpType
// };
// var exp = obj.GetExp<");
#line 211 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write(@">();
// query = exp != null ? query.Where(exp) : query;
// }
// if (pagedInput.SearchList != null && pagedInput.SearchList.Count > 0)
// {
// List objList = new List();
// foreach (var o in pagedInput.SearchList)
// {
// if (string.IsNullOrEmpty(o.KeyWords))
// continue;
// object keyWords = o.KeyWords;
// objList.Add(new LambdaObject
// {
// FieldType = (LambdaFieldType)o.FieldType,
// FieldName = o.KeyField,
// FieldValue = keyWords,
// ExpType = (LambdaExpType)o.ExpType
// });
// }
// var exp = objList.GetExp<");
#line 230 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write(">();\r\n // query = exp != null ? query.Where(exp) : query;\r\n " +
"// }\r\n // return query;\r\n //}\r\n\r\n\r\n\r\n //protected ove" +
"rride IQueryable<");
#line 238 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write("> ApplySorting(IQueryable<");
#line 238 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write("> query, IwbPagedRequestDto input)\r\n //{\r\n // return query.Order" +
"By(a => a.No);\r\n //}\r\n\r\n //protected override IQueryable<");
#line 243 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write("> ApplyPaging(IQueryable<");
#line 243 "D:\02Study\ABP\VberAdminBaseSystem\Template\VberAdminTemplate\CodeGenerator\Templates\V3\Service.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Model.ClassName));
#line default
#line hidden
this.Write(@"> query, IwbPagedRequestDto input)
//{
// if (input is IPagedResultRequest pagedInput)
// {
// return query.Skip(pagedInput.SkipCount).Take(pagedInput.MaxResultCount);
// }
// return query;
//}
#endregion
#endregion
}
}
");
return this.GenerationEnvironment.ToString();
}
}
#line default
#line hidden
#region Base class
///
/// Base class for this transformation
///
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")]
public class ServiceBase
{
#region Fields
private global::System.Text.StringBuilder generationEnvironmentField;
private global::System.CodeDom.Compiler.CompilerErrorCollection errorsField;
private global::System.Collections.Generic.List indentLengthsField;
private string currentIndentField = "";
private bool endsWithNewline;
private global::System.Collections.Generic.IDictionary sessionField;
#endregion
#region Properties
///
/// The string builder that generation-time code is using to assemble generated output
///
protected System.Text.StringBuilder GenerationEnvironment
{
get
{
if ((this.generationEnvironmentField == null))
{
this.generationEnvironmentField = new global::System.Text.StringBuilder();
}
return this.generationEnvironmentField;
}
set
{
this.generationEnvironmentField = value;
}
}
///
/// The error collection for the generation process
///
public System.CodeDom.Compiler.CompilerErrorCollection Errors
{
get
{
if ((this.errorsField == null))
{
this.errorsField = new global::System.CodeDom.Compiler.CompilerErrorCollection();
}
return this.errorsField;
}
}
///
/// A list of the lengths of each indent that was added with PushIndent
///
private System.Collections.Generic.List indentLengths
{
get
{
if ((this.indentLengthsField == null))
{
this.indentLengthsField = new global::System.Collections.Generic.List();
}
return this.indentLengthsField;
}
}
///
/// Gets the current indent we use when adding lines to the output
///
public string CurrentIndent
{
get
{
return this.currentIndentField;
}
}
///
/// Current transformation session
///
public virtual global::System.Collections.Generic.IDictionary Session
{
get
{
return this.sessionField;
}
set
{
this.sessionField = value;
}
}
#endregion
#region Transform-time helpers
///
/// Write text directly into the generated output
///
public void Write(string textToAppend)
{
if (string.IsNullOrEmpty(textToAppend))
{
return;
}
// If we're starting off, or if the previous text ended with a newline,
// we have to append the current indent first.
if (((this.GenerationEnvironment.Length == 0)
|| this.endsWithNewline))
{
this.GenerationEnvironment.Append(this.currentIndentField);
this.endsWithNewline = false;
}
// Check if the current text ends with a newline
if (textToAppend.EndsWith(global::System.Environment.NewLine, global::System.StringComparison.CurrentCulture))
{
this.endsWithNewline = true;
}
// This is an optimization. If the current indent is "", then we don't have to do any
// of the more complex stuff further down.
if ((this.currentIndentField.Length == 0))
{
this.GenerationEnvironment.Append(textToAppend);
return;
}
// Everywhere there is a newline in the text, add an indent after it
textToAppend = textToAppend.Replace(global::System.Environment.NewLine, (global::System.Environment.NewLine + this.currentIndentField));
// If the text ends with a newline, then we should strip off the indent added at the very end
// because the appropriate indent will be added when the next time Write() is called
if (this.endsWithNewline)
{
this.GenerationEnvironment.Append(textToAppend, 0, (textToAppend.Length - this.currentIndentField.Length));
}
else
{
this.GenerationEnvironment.Append(textToAppend);
}
}
///
/// Write text directly into the generated output
///
public void WriteLine(string textToAppend)
{
this.Write(textToAppend);
this.GenerationEnvironment.AppendLine();
this.endsWithNewline = true;
}
///
/// Write formatted text directly into the generated output
///
public void Write(string format, params object[] args)
{
this.Write(string.Format(global::System.Globalization.CultureInfo.CurrentCulture, format, args));
}
///
/// Write formatted text directly into the generated output
///
public void WriteLine(string format, params object[] args)
{
this.WriteLine(string.Format(global::System.Globalization.CultureInfo.CurrentCulture, format, args));
}
///
/// Raise an error
///
public void Error(string message)
{
System.CodeDom.Compiler.CompilerError error = new global::System.CodeDom.Compiler.CompilerError();
error.ErrorText = message;
this.Errors.Add(error);
}
///
/// Raise a warning
///
public void Warning(string message)
{
System.CodeDom.Compiler.CompilerError error = new global::System.CodeDom.Compiler.CompilerError();
error.ErrorText = message;
error.IsWarning = true;
this.Errors.Add(error);
}
///
/// Increase the indent
///
public void PushIndent(string indent)
{
if ((indent == null))
{
throw new global::System.ArgumentNullException("indent");
}
this.currentIndentField = (this.currentIndentField + indent);
this.indentLengths.Add(indent.Length);
}
///
/// Remove the last indent that was added with PushIndent
///
public string PopIndent()
{
string returnValue = "";
if ((this.indentLengths.Count > 0))
{
int indentLength = this.indentLengths[(this.indentLengths.Count - 1)];
this.indentLengths.RemoveAt((this.indentLengths.Count - 1));
if ((indentLength > 0))
{
returnValue = this.currentIndentField.Substring((this.currentIndentField.Length - indentLength));
this.currentIndentField = this.currentIndentField.Remove((this.currentIndentField.Length - indentLength));
}
}
return returnValue;
}
///
/// Remove any indentation
///
public void ClearIndent()
{
this.indentLengths.Clear();
this.currentIndentField = "";
}
#endregion
#region ToString Helpers
///
/// Utility class to produce culture-oriented representation of an object as a string.
///
public class ToStringInstanceHelper
{
private System.IFormatProvider formatProviderField = global::System.Globalization.CultureInfo.InvariantCulture;
///
/// Gets or sets format provider to be used by ToStringWithCulture method.
///
public System.IFormatProvider FormatProvider
{
get
{
return this.formatProviderField ;
}
set
{
if ((value != null))
{
this.formatProviderField = value;
}
}
}
///
/// This is called from the compile/run appdomain to convert objects within an expression block to a string
///
public string ToStringWithCulture(object objectToConvert)
{
if ((objectToConvert == null))
{
throw new global::System.ArgumentNullException("objectToConvert");
}
System.Type t = objectToConvert.GetType();
System.Reflection.MethodInfo method = t.GetMethod("ToString", new System.Type[] {
typeof(System.IFormatProvider)});
if ((method == null))
{
return objectToConvert.ToString();
}
else
{
return ((string)(method.Invoke(objectToConvert, new object[] {
this.formatProviderField })));
}
}
}
private ToStringInstanceHelper toStringHelperField = new ToStringInstanceHelper();
///
/// Helper to produce culture-oriented representation of an object as a string
///
public ToStringInstanceHelper ToStringHelper
{
get
{
return this.toStringHelperField;
}
}
#endregion
}
#endregion
}