/// <summary> /// Gets the member whose table and colum name are obtained parsing the given dynamic /// lambda expression, using either the 'x => x.Table.Column' or 'x => x.Column' forms, /// or null if no such member can be found. In the later case, if the collection contains /// several members with the same column name, even if they belong to different tables, an /// exception is thrown. /// </summary> /// <param name="spec">A dynamic lambda expressin that resolves into the specification /// of the entry to find.</param> /// <returns>The member found, or null.</returns> public ISchemaEntry FindEntry(Func <dynamic, object> spec) { if (IsDisposed) { throw new ObjectDisposedException(this.ToString()); } if (spec == null) { throw new ArgumentNullException("spec", "Entry specification cannot be null."); } var name = DynamicInfo.ParseName(spec); var parts = name.Split('.'); if (parts.Length == 1) { return(FindEntry(parts[0])); } if (parts.Length == 1) { return(FindEntry(parts[0], parts[1])); } throw new FormatException("Invalid specification '{0}'.".FormatWith(name)); }
/// <summary> /// Enlist the invocation into the connection's transaction if needed. /// </summary> private void OnInvokeAddTransaction() { if (Transaction.Current != null) { return; // Managed externally by the global scope... } var flags = TypeEx.InstancePublicAndHidden; object inner = null; if (DynamicInfo.TryRead(Link.DbConnection, x => x.InnerConnection, out inner, flags) == null) { object current = null; if (DynamicInfo.TryRead(inner, x => x.CurrentTransaction, out current, flags) == null) { object parent = null; if (DynamicInfo.TryRead(current, x => x.Parent, out parent, flags) == null) { if (parent != null) { _DbCommand.Transaction = (IDbTransaction)parent; } } } } }
private static string ParseImpl(PageInfo pageInfo, ContextInfo contextInfo, string loading, string template, bool inline, string onBeforeSend, string onSuccess, string onComplete, string onError) { pageInfo.AddPageBodyCodeIfNotExists(PageInfo.Const.StlClient); //运行解析以便为页面生成所需JS引用 if (!string.IsNullOrEmpty(template)) { StlParserManager.ParseInnerContent(new StringBuilder(template), pageInfo, contextInfo); } var dynamicInfo = new DynamicInfo { ElementName = ElementName, SiteId = pageInfo.SiteId, ChannelId = contextInfo.ChannelId, ContentId = contextInfo.ContentId, TemplateId = pageInfo.TemplateInfo.Id, AjaxDivId = StlParserUtility.GetAjaxDivId(pageInfo.UniqueId), LoadingTemplate = loading, SuccessTemplate = template, OnBeforeSend = onBeforeSend, OnSuccess = onSuccess, OnComplete = onComplete, OnError = onError }; return(dynamicInfo.GetScript(ApiRouteActionsDynamic.GetUrl(pageInfo.ApiUrl), inline)); }
public async Task <GetResult> Get([FromBody] GetRequest request) { var user = await _authManager.GetUserAsync(); var dynamicInfo = DynamicInfo.GetDynamicInfo(_settingsManager, request.Value, request.Page, user, Request.Path + Request.QueryString); var ifInfo = TranslateUtils.JsonDeserialize <DynamicInfo.IfInfo>(dynamicInfo.ElementValues); var isSuccess = false; var html = string.Empty; if (ifInfo != null) { if (StringUtils.EqualsIgnoreCase(ifInfo.Type, StlIf.TypeIsUserLoggin)) { isSuccess = _authManager.IsUser; } var template = isSuccess ? dynamicInfo.SuccessTemplate : dynamicInfo.FailureTemplate; html = await StlDynamic.ParseDynamicContentAsync(_parseManager, dynamicInfo, template); } return(new GetResult { Value = isSuccess, Html = html }); }
private static async Task <string> ParseImplAsync(IParseManager parseManager, string loading, string template, bool inline, string onBeforeSend, string onSuccess, string onComplete, string onError) { await parseManager.PageInfo.AddPageHeadCodeIfNotExistsAsync(ParsePage.Const.StlClient); //运行解析以便为页面生成所需JS引用 if (!string.IsNullOrEmpty(template)) { await parseManager.ParseInnerContentAsync(new StringBuilder(template)); } var dynamicInfo = new DynamicInfo(parseManager.SettingsManager) { ElementName = ElementName, SiteId = parseManager.PageInfo.SiteId, ChannelId = parseManager.ContextInfo.ChannelId, ContentId = parseManager.ContextInfo.ContentId, TemplateId = parseManager.PageInfo.Template.Id, ElementId = StringUtils.GetElementId(), LoadingTemplate = loading, SuccessTemplate = template, OnBeforeSend = onBeforeSend, OnSuccess = onSuccess, OnComplete = onComplete, OnError = onError }; var dynamicUrl = parseManager.PathManager.GetDynamicApiUrl(); return(dynamicInfo.GetScript(dynamicUrl, inline)); }
public static void Get(DynamicInfo info) { var item = info.GetTasks(); Console.WriteLine("系统中共有进程数 :" + item.Total); Console.WriteLine("正在运行的进程数 :" + item.Running); }
static void Main(string[] args) { DynamicInfo info = new DynamicInfo(); //Get(info); RefGet(info); Console.ReadKey(); }
public IHttpActionResult Main() { try { var request = new AuthenticatedRequest(); var dynamicInfo = DynamicInfo.GetDynamicInfo(request, request.UserInfo); var ifInfo = TranslateUtils.JsonDeserialize <DynamicInfo.IfInfo>(dynamicInfo.ElementValues); var isSuccess = false; var html = string.Empty; if (ifInfo != null) { if (StringUtils.EqualsIgnoreCase(ifInfo.Type, StlIf.TypeIsUserLoggin)) { isSuccess = request.IsUserLoggin; } else if (StringUtils.EqualsIgnoreCase(ifInfo.Type, StlIf.TypeIsAdministratorLoggin)) { isSuccess = request.IsAdminLoggin; } else if (StringUtils.EqualsIgnoreCase(ifInfo.Type, StlIf.TypeIsUserOrAdministratorLoggin)) { isSuccess = request.IsUserLoggin || request.IsAdminLoggin; } else if (StringUtils.EqualsIgnoreCase(ifInfo.Type, StlIf.TypeIsUserGroup)) { if (request.IsUserLoggin) { var group = UserGroupManager.GetUserGroupInfo(request.UserInfo.GroupId); if (StringUtils.EqualsIgnoreCase(ifInfo.Op, StlIf.OperateNotEquals)) { isSuccess = !StringUtils.EqualsIgnoreCase(group.GroupName, ifInfo.Value); } else { isSuccess = StringUtils.EqualsIgnoreCase(group.GroupName, ifInfo.Value); } } } var template = isSuccess ? dynamicInfo.SuccessTemplate : dynamicInfo.FailureTemplate; html = StlDynamic.ParseDynamicContent(dynamicInfo, template); } return(Ok(new { Value = isSuccess, Html = html })); } catch (Exception ex) { return(InternalServerError(ex)); } }
public SystemEnvironment() { if (IsWindows()) { } else { info = new DynamicInfo(); } }
public async Task <SubmitResult> Submit([FromBody] SubmitRequest request) { var user = await _authManager.GetUserAsync(); var dynamicInfo = DynamicInfo.GetDynamicInfo(_settingsManager, request.Value, request.Page, user, Request.Path + Request.QueryString); return(new SubmitResult { Value = true, Html = await StlDynamic.ParseDynamicContentAsync(_parseManager, dynamicInfo, dynamicInfo.SuccessTemplate) }); }
/// <summary> /// Gets or sets the value stored at the entry whose table and colum name are obtained /// parsing the given dynamic lambda expression, using either the 'x => x.Table.Column' /// or 'x => x.Column' forms, or null if no such member can be found. In the later case, /// if the collection contains several members with the same column name, even if they /// belong to different tables, an exception is thrown. /// </summary> /// <param name="spec">A dynamic lambda expressin that resolves into the specification /// of the entry to find.</param> /// <returns>The member found, or null.</returns> public object this[Func <dynamic, object> spec] { get { if (IsDisposed) { throw new ObjectDisposedException(this.ToString()); } if (_Schema == null) { throw new InvalidOperationException("This '{0}' is not associated with any schema.".FormatWith(this)); } if (spec == null) { throw new ArgumentNullException("spec", "Entry specification cannot be null."); } var entry = _Schema.FindEntry(spec); if (entry == null) { throw new NotFoundException( "Entry '{0}' not found in this '{1}'".FormatWith(DynamicInfo.ParseName(spec), this)); } var index = _Schema.IndexOf(entry); return(_Values[index]); } set { if (IsDisposed) { throw new ObjectDisposedException(this.ToString()); } if (_Schema == null) { throw new InvalidOperationException("This '{0}' is not associated with any schema.".FormatWith(this)); } if (spec == null) { throw new ArgumentNullException("spec", "Entry specification cannot be null."); } var entry = _Schema.FindEntry(spec); if (entry == null) { throw new NotFoundException( "Entry '{0}' not found in this '{1}'".FormatWith(DynamicInfo.ParseName(spec), this)); } var index = _Schema.IndexOf(entry); _Values[index] = value; } }
private static async Task <string> ParseDynamicAsync(IParseManager parseManager, string testType, string testValue, string testOperate, string loading, string yes, string no, string onBeforeSend, string onSuccess, string onComplete, string onError) { var pageInfo = parseManager.PageInfo; var contextInfo = parseManager.ContextInfo; if (string.IsNullOrEmpty(yes) && string.IsNullOrEmpty(no)) { return(string.Empty); } await pageInfo.AddPageHeadCodeIfNotExistsAsync(ParsePage.Const.StlClient); var elementId = StringUtils.GetElementId(); //运行解析以便为页面生成所需JS引用 if (!string.IsNullOrEmpty(yes)) { await parseManager.ParseInnerContentAsync(new StringBuilder(yes)); } if (!string.IsNullOrEmpty(no)) { await parseManager.ParseInnerContentAsync(new StringBuilder(no)); } var dynamicInfo = new DynamicInfo(parseManager.SettingsManager) { ElementName = ElementName, SiteId = pageInfo.SiteId, ChannelId = contextInfo.ChannelId, ContentId = contextInfo.ContentId, TemplateId = pageInfo.Template.Id, ElementId = elementId, LoadingTemplate = loading, SuccessTemplate = yes, FailureTemplate = no, OnBeforeSend = onBeforeSend, OnSuccess = onSuccess, OnComplete = onComplete, OnError = onError }; var ifInfo = new DynamicInfo.IfInfo { Type = testType, Op = testOperate, Value = testValue }; dynamicInfo.ElementValues = TranslateUtils.JsonSerialize(ifInfo); var dynamicUrl = parseManager.PathManager.GetIfApiUrl(); return(dynamicInfo.GetScript(dynamicUrl, true)); }
public static void RefGet(DynamicInfo info) { // 获取进程统计 KeyValuePair <string, object>[] a = info.GetRefTasks(); // 获取CPU资源统计 KeyValuePair <string, object>[] b = info.GetRefCpuState(); // 获取内存统计 KeyValuePair <string, object>[] c = info.GetRefMem(); // 获取虚拟内存统计 KeyValuePair <string, object>[] d = info.GetRefSwap(); Dictionary <int, PidInfo> dic = info.GetPidInfo(); Console.WriteLine("\n进程统计:\n"); foreach (var item in a) { Console.WriteLine($"{item.Key} : {item.Value}"); } Console.WriteLine("\n\nCPU资源统计:\n"); foreach (var item in b) { Console.WriteLine($"{item.Key} : {item.Value}"); } Console.WriteLine("\n\n内存统计:\n"); foreach (var item in c) { Console.WriteLine($"{item.Key} : {item.Value}"); } Console.WriteLine("\n\n获取虚拟内存统计:\n"); foreach (var item in d) { Console.WriteLine($"{item.Key} : {item.Value}"); } Console.WriteLine("\n\n 各个进程使用的资源:\n"); Console.WriteLine(" 进程Id 进程名称 所属用户 优化级 高低优先级 虚拟内存 物理内存 共享内存 进程状态 占用系统CPU(%) 占用内存(%d) "); foreach (var item in dic) { Console.WriteLine($"{item.Key} {item.Value.Command} {item.Value.User} {item.Value.PR} " + $"{item.Value.Nice} {item.Value.VIRT} {item.Value.RES} {item.Value.SHR} " + $"{item.Value.State} {item.Value.CPU} {item.Value.Mem}"); } }
/// <summary> /// Locates the map registered to manage the entities of the given type, or tries to /// create a new weak map otherwise if possible. Returns null if no map is found and /// no weak map can be created. /// </summary> /// <param name="type">The type of the entities managed by the map to locate.</param> /// <param name="table">A dynamic lambda expression that resolves into the name of the /// primary table, used when creating a weak map. If null the a number of suitable /// names are tried based upon the name of the type.</param> /// <returns>The requested map, or null.</returns> internal IUberMap LocateUberMap(Type type, Func <dynamic, object> table = null) { if (IsDisposed) { throw new ObjectDisposedException(this.ToString()); } if (type == null) { throw new ArgumentNullException("type", "Type cannot be null."); } lock (ProxyGenerator.ProxyLock) { var holder = ProxyGenerator.ProxyHolders.Find(type); if (holder != null) { type = holder.ProxyType.BaseType; } } IUberMap map = null; lock (MasterLock) { map = _UberMaps.Find(type); if (map == null) { var generic = typeof(DataMap <>); var concrete = generic.MakeGenericType(new Type[] { type }); var cons = concrete.GetConstructor(new Type[] { typeof(DataRepository), typeof(string) }); if (table != null) { var name = DynamicInfo.ParseName(table); map = (IUberMap)cons.Invoke(new object[] { this, name }); map.IsWeakMap = false; } else if (WeakMapsEnabled) { var name = Uber.FindTableName(Link, type.Name); if (name != null) { map = (IUberMap)cons.Invoke(new object[] { this, name }); map.IsWeakMap = true; } } } } return(map); }
private void TestResultExtended(int outputSetLength, int iteration, int startIteration) { if (TestVectors == null) { return; } if (iteration > startIteration) { ClearLine(outputSetLength + 4); } var result = new StringBuilder(); result.Append($"\nИтерация обучения: {iteration}\n"); TestVectors.ForEach(vector => result.Append($" {vector._word} ")); result.Append('\n'); for (int i = 0; i < _netsList.Count; i++) { for (int k = 0; k < TestVectors.Count; k++) { // Получение ответа: var outputVector = _netsList[i].Handle(TestVectors[k]._listFloat); double different = 0; // Запись знака динамики для следующего ответа: if (_anwserDynamicInfos[i].Count == TestVectors.Count) { different = Math.Abs(outputVector[0] - _anwserDynamicInfos[i][k]._lastAnwser); _anwserDynamicInfos[i][k] = new DynamicInfo( outputVector[0] > _anwserDynamicInfos[i][k]._lastAnwser ? '+' : '-', outputVector[0] ); } else { _anwserDynamicInfos[i].Add(new DynamicInfo('=', outputVector[0])); } result.Append($"{outputVector[0]:f5} ({_anwserDynamicInfos[i][k]._lastSymbol}) ({_anwserDynamicInfos[i][k]._lastSymbol}{different:f5})\t"); } result.Append('\n'); } Console.WriteLine(result); }
private static string ParseDynamic(PageInfo pageInfo, ContextInfo contextInfo, string testType, string testValue, string testOperate, string loading, string yes, string no, string onBeforeSend, string onSuccess, string onComplete, string onError) { if (string.IsNullOrEmpty(yes) && string.IsNullOrEmpty(no)) { return(string.Empty); } pageInfo.AddPageBodyCodeIfNotExists(PageInfo.Const.StlClient); var ajaxDivId = StlParserUtility.GetAjaxDivId(pageInfo.UniqueId); //运行解析以便为页面生成所需JS引用 if (!string.IsNullOrEmpty(yes)) { StlParserManager.ParseInnerContent(new StringBuilder(yes), pageInfo, contextInfo); } if (!string.IsNullOrEmpty(no)) { StlParserManager.ParseInnerContent(new StringBuilder(no), pageInfo, contextInfo); } var dynamicInfo = new DynamicInfo { ElementName = ElementName, SiteId = pageInfo.SiteId, ChannelId = contextInfo.ChannelId, ContentId = contextInfo.ContentId, TemplateId = pageInfo.TemplateInfo.Id, AjaxDivId = ajaxDivId, LoadingTemplate = loading, SuccessTemplate = yes, FailureTemplate = no, OnBeforeSend = onBeforeSend, OnSuccess = onSuccess, OnComplete = onComplete, OnError = onError }; var ifInfo = new DynamicInfo.IfInfo { Type = testType, Op = testOperate, Value = testValue }; dynamicInfo.ElementValues = TranslateUtils.JsonSerialize(ifInfo); return(dynamicInfo.GetScript(ApiRouteActionsIf.GetUrl(pageInfo.ApiUrl))); }
private List <Instruction> GenerateFor(MethodDefinition md, int target, bool useMath) { List <Instruction> builder = new List <Instruction>(); if (useMath || Dynamics.Count == 0) { // Testing if math is the real issue. //builder.Add(Instruction.Create(OpCodes.Ldc_I4, target)); builder.AddRange(MathGen.GenerateLevels(target, OpCodes.Ldc_I4, rand.Next(1, 3))); } else { DynamicInfo dCall = null; builder.AddRange(Generate(md, target, OpCodes.Ldc_I4, out dCall, true)); } return(builder); }
/// <summary> /// 保存动态内容 /// </summary> /// <param name="dynamicInfo"></param> /// <returns></returns> private async Task <bool> SaveDynamicContent(DynamicInfo dynamicInfo) { if (dynamicInfo == null) { throw new ArgumentNullException(); } Context.Add(dynamicInfo); try { await Context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { throw; } return(true); }
public IHttpActionResult Main() { try { var request = new AuthenticatedRequest(); var dynamicInfo = DynamicInfo.GetDynamicInfo(request, request.UserInfo); return(Ok(new { Value = true, Html = StlDynamic.ParseDynamicContent(dynamicInfo, dynamicInfo.SuccessTemplate) })); } catch (Exception ex) { return(InternalServerError(ex)); } }
/// <summary> /// Adds into this collection a new entry whose name is specified or, optionally, returns /// the existing column for that name. /// </summary> /// <param name="name">A dynamic lambda expression that resolves into the name of the /// entry to add.</param> /// <param name="raise">If true and the name matches with the name of an existing column /// then throw an exception. False to return the existing column.</param> /// <returns>The entry added into or found in this collection.</returns> public MapColumn <T> Add(Func <dynamic, object> name, bool raise = true) { if (IsDisposed) { throw new ObjectDisposedException(this.ToString()); } if (Map.IsDisposed) { throw new ObjectDisposedException(Map.ToString()); } if (Map.IsValidated) { throw new InvalidOperationException("Map '{0}' is validated.".FormatWith(Map)); } if (name == null) { throw new ArgumentNullException("name", "Name specification cannot be null."); } var temp = DynamicInfo.ParseName(name); var sensitive = Map.Repository.Link.Engine.CaseSensitiveNames; var entry = _List.Find(x => string.Compare(x.Name, temp, !sensitive) == 0); if (entry != null) { if (!raise) { return(entry); } throw new DuplicateException( "Entry for name '{0}' is already registered in this '{1}'.".FormatWith(temp, this)); } entry = CreateChild(Map, temp); _List.Add(entry); return(entry); }
/// <summary> /// 使用随机形容词生成一条动态,并保存到数据库 /// </summary> /// <param name="dynamicType">[必传]动态类型,用户产生相关动态的类型</param> /// <param name="periodId">[必传]赛季ID</param> /// <param name="dataId">[必传]关键数据ID(自由交易、派发收入、完成任务收入时是积分明细表的ID,发布任务、枪到任务是任务表的ID,抽奖兑奖是奖品ID)</param> /// <param name="outUserName">支出用户姓名(自由交易时的支出方,只有自由交易时才传)</param> /// <param name="outUserGroupName">支出用户组别名称(自由交易时的支出方,只有自由交易时才传)</param> /// <param name="getUserName">[必传]收入用户姓名(自由交易时的收入方)</param> /// <param name="getUserGroupName">[必传]收入用户组别名称(自由交易时的收入方)</param> /// <param name="userId">动态人的用户ID(支出时传支出人的ID,收入时传收入人的ID,任务/抽奖/兑奖时就是产生动态的那个人的ID)</param> /// <param name="theme">[必传]主题(任务相关就传任务名称,派发和自由交易传前端填写的标题)</param> /// <param name="Score">[必传]产生的积分(支出和收入时产生的积分)</param> /// <param name="userNumber">需要的人数(发布任务时才传)</param> /// <param name="robDateTime">抢任务时间(发布任务时才传)</param> /// <returns></returns> public async Task <string> AddDynamicContent(DynamicType dynamicType, string periodId, string dataId, string outUserName, string outUserGroupName, string getUserName, string getUserGroupName, string userId, string theme, int Score, int?userNumber, DateTime?robDateTime) { if (string.IsNullOrEmpty(periodId) || string.IsNullOrEmpty(dataId) || string.IsNullOrEmpty(getUserName) || string.IsNullOrEmpty(getUserGroupName) || string.IsNullOrEmpty(theme)) { return(string.Empty); } //关键形容词 string keyAdjective = ""; //查询形容词库 var adjective = await Context.DynamicAdjectives.AsNoTracking().Where(w => w.Type == (int)dynamicType).ToListAsync(); if (adjective != null && adjective.Count != 0) { Random random = new Random(); keyAdjective = adjective[random.Next(0, adjective.Count - 1)].Adjective; } //动态内容 string content = ""; switch (dynamicType) { case DynamicType.DealExpenditure: content = $"{outUserName}-{outUserGroupName},因为《{theme}》{keyAdjective}给了{getUserName}-{getUserGroupName}{Math.Abs(Score)}K币。"; break; case DynamicType.DealIncome: content = $"{getUserName}-{getUserGroupName},因为《{theme}》{keyAdjective}获得了{outUserName}-{outUserGroupName}给的{Math.Abs(Score)}K币。"; break; case DynamicType.TaskIncome: content = $"{getUserName}-{getUserGroupName},{keyAdjective}完成了任务《{theme}》,获得{Math.Abs(Score)}K币。"; break; case DynamicType.DistributeIncome: content = $"{getUserName}-{getUserGroupName},因为《{theme}》{keyAdjective}获得了{Math.Abs(Score)}K币。"; break; case DynamicType.TaskPublish: content = $"{getUserName}-{getUserGroupName},{keyAdjective}发布了任务《{theme}》,需{userNumber}人,共{Math.Abs(Score)}K币。"; break; case DynamicType.TaskGet: content = $"{getUserName}-{getUserGroupName},{keyAdjective}抢到了任务《{theme}》,预计最高可获得{Math.Abs(Score)}K币。"; break; case DynamicType.RandomGift: content = $"{getUserName}-{getUserGroupName},花费{Math.Abs(Score)}K币,通过抽奖{keyAdjective}获得《{theme}》"; break; case DynamicType.GetGift: content = $"{getUserName}-{getUserGroupName},{keyAdjective}花费{Math.Abs(Score)}K币,直接兑换了《{theme}》"; break; case DynamicType.BuyLottery: content = $"{getUserName}-{getUserGroupName},在K彩第《{theme}》期,{keyAdjective}投注{Math.Abs(Score)}K币。"; break; case DynamicType.WinLottery: content = $"{getUserName}-{getUserGroupName},{theme}。{keyAdjective}中得{Math.Abs(Score)}K币。"; break; case DynamicType.LotteryResult: content = $"{theme}"; break; default: return(string.Empty); } var dynamicInfo = new DynamicInfo { Id = Guid.NewGuid().ToString(), PeriodId = periodId, UserId = userId, UserFullName = $" { getUserName }-{ getUserGroupName }", DataId = dataId, DynamicContent = content, Score = Score, Adjective = keyAdjective, CreateTime = DateTime.Now, DynamicType = (int)dynamicType }; await SaveDynamicContent(dynamicInfo); return(content); }
/// <summary> /// Gets or sets the value held by the column whose table and colum names are obtained /// parsing the given dynamic lambda expression, using either the 'x => x.Table.Column' /// or 'x => x.Column' forms. In the later case, if several members are found sharing the /// same column name for different tables then an exception is thrown. /// <para>The setter creates dynamically an entry for the given column specification.</para> /// </summary> /// <param name="spec">A dynamic lambda expression that resolves into the column name.</param> /// <returns>The value held by the requested entry.</returns> public object this[Func <dynamic, object> spec] { get { if (IsDisposed) { throw new ObjectDisposedException(this.ToString()); } if (spec == null) { throw new ArgumentNullException("spec", "Entry specification cannot be null."); } var entry = _Schema.FindEntry(spec); if (entry == null) { throw new NotFoundException( "Entry '{0}' not found in this '{1}'".FormatWith(DynamicInfo.ParseName(spec), this)); } var index = _Schema.IndexOf(entry); return(_Values[index]); } set { if (IsDisposed) { throw new ObjectDisposedException(this.ToString()); } if (spec == null) { throw new ArgumentNullException("spec", "Entry specification cannot be null."); } var entry = _Schema.FindEntry(spec); if (entry == null) { var name = DynamicInfo.ParseName(spec); var parts = name.Split('.'); if (parts.Length == 1) { _Schema.AddCreate(parts[0]); } else if (parts.Length == 2) { _Schema.AddCreate(parts[0], parts[1]); } else { throw new FormatException("Invalid specification '{0}'.".FormatWith(name)); } _Values.Add(value); } else { var index = _Schema.IndexOf(entry); _Values[index] = value; } } }
public List <Instruction> Generate(MethodDefinition CurrentMethod, int target, OpCode instType, out DynamicInfo UsedInfo, bool useMath = false) { //FieldDefinition fDef = GenerateDynamic(); List <Instruction> builder = new List <Instruction>(); /*ExpGen = new ExpressionGenerator(rand.Next(50000), Module); * Expression ex = ExpGen.Generate(5); * int evald = ExpressionEvaluator.Evaluate(ex, target); * Expression exR = ExpressionInverser.InverseExpression(ex); * * int myTarget = target + 2; * * int myTargetTest = ExpressionEvaluator.Evaluate(ex, myTarget); * Expression exR2 = ExpressionInverser.InverseExpression(ex); * int difference = myTargetTest - evald; * * * * DynamicInfo dynCall = CreateDynamic(ex, exR, target, evald, useMath);*/ DynamicInfo dynCall = null; //while (dynCall.Wrapper.Methods.FirstOrDefault(x => x.Name == "Initialize")) if (CurrentMethod == null) { dynCall = Dynamics[rand.Next(0, Dynamics.Count - 1)]; } else { do { dynCall = Dynamics[rand.Next(0, Dynamics.Count - 1)]; }while (dynCall.Wrapper.Methods.FirstOrDefault(x => x.Name == "DYN___Initialize") == CurrentMethod); } int evald = ExpressionEvaluator.Evaluate(dynCall.Exp, target); builder.Add(Instruction.Create(OpCodes.Ldsfld, dynCall.DelegateInstance)); builder.Add(Instruction.Create(OpCodes.Ldc_I4, evald)); builder.Add(Instruction.Create(OpCodes.Conv_R8)); builder.Add(Instruction.Create(OpCodes.Callvirt, dynCall.DelegateType.Methods.FirstOrDefault(x => x.Name == "Invoke"))); // Convert here... if (instType == OpCodes.Ldc_I4) { builder.Add(Instruction.Create(OpCodes.Conv_I4)); } else if (instType == OpCodes.Ldc_R4) { builder.Add(Instruction.Create(OpCodes.Conv_R4)); } else if (instType == OpCodes.Ldc_I8) { builder.Add(Instruction.Create(OpCodes.Conv_I8)); } else if (instType == OpCodes.Ldc_I4_0) { builder.Add(Instruction.Create(OpCodes.Conv_U4)); } else if (instType == OpCodes.Ldc_I4_1) { builder.Add(Instruction.Create(OpCodes.Conv_U8)); } else { // Double, so no worries. } UsedInfo = dynCall; return(builder); }
public static async Task <string> ParseDynamicContentAsync(IParseManager parseManager, DynamicInfo dynamicInfo, string template) { var databaseManager = parseManager.DatabaseManager; if (string.IsNullOrEmpty(template)) { return(string.Empty); } var templateInfo = await databaseManager.TemplateRepository.GetAsync(dynamicInfo.TemplateId); var siteInfo = await databaseManager.SiteRepository.GetAsync(dynamicInfo.SiteId); await parseManager.InitAsync(siteInfo, dynamicInfo.ChannelId, dynamicInfo.ContentId, templateInfo); parseManager.PageInfo.User = dynamicInfo.User; var templateContent = StlRequestEntities.ParseRequestEntities(dynamicInfo.QueryString, template); var contentBuilder = new StringBuilder(templateContent); var stlElementList = StlParserUtility.GetStlElementList(contentBuilder.ToString()); var pageIndex = dynamicInfo.Page - 1; //如果标签中存在<stl:pageContents> if (StlParserUtility.IsStlElementExists(StlPageContents.ElementName, stlElementList)) { var stlElement = StlParserUtility.GetStlElement(StlPageContents.ElementName, stlElementList); var stlPageContentsElement = stlElement; var stlPageContentsElementReplaceString = stlElement; var pageContentsElementParser = await StlPageContents.GetAsync(stlPageContentsElement, parseManager); var(pageCount, totalNum) = pageContentsElementParser.GetPageCount(); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == pageIndex) { var pageHtml = await pageContentsElementParser.ParseAsync(totalNum, currentPageIndex, pageCount, false); contentBuilder.Replace(stlPageContentsElementReplaceString, pageHtml); await parseManager.ReplacePageElementsInDynamicPageAsync(contentBuilder, stlElementList, currentPageIndex, pageCount, totalNum, false, dynamicInfo.ElementId); break; } } } //如果标签中存在<stl:pageChannels> else if (StlParserUtility.IsStlElementExists(StlPageChannels.ElementName, stlElementList)) { var stlElement = StlParserUtility.GetStlElement(StlPageChannels.ElementName, stlElementList); var stlPageChannelsElement = stlElement; var stlPageChannelsElementReplaceString = stlElement; var pageChannelsElementParser = await StlPageChannels.GetAsync(stlPageChannelsElement, parseManager); var pageCount = pageChannelsElementParser.GetPageCount(out var totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex != pageIndex) { continue; } var pageHtml = await pageChannelsElementParser.ParseAsync(currentPageIndex, pageCount); contentBuilder.Replace(stlPageChannelsElementReplaceString, pageHtml); await parseManager.ReplacePageElementsInDynamicPageAsync(contentBuilder, stlElementList, currentPageIndex, pageCount, totalNum, false, dynamicInfo.ElementId); break; } } //如果标签中存在<stl:pageSqlContents> else if (StlParserUtility.IsStlElementExists(StlPageSqlContents.ElementName, stlElementList)) { var stlElement = StlParserUtility.GetStlElement(StlPageSqlContents.ElementName, stlElementList); var stlPageSqlContentsElement = stlElement; var stlPageSqlContentsElementReplaceString = stlElement; var pageSqlContentsElementParser = await StlPageSqlContents.GetAsync(stlPageSqlContentsElement, parseManager); var pageCount = pageSqlContentsElementParser.GetPageCount(out var totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex != pageIndex) { continue; } var pageHtml = await pageSqlContentsElementParser.ParseAsync(totalNum, currentPageIndex, pageCount, false); contentBuilder.Replace(stlPageSqlContentsElementReplaceString, pageHtml); await parseManager.ReplacePageElementsInDynamicPageAsync(contentBuilder, stlElementList, currentPageIndex, pageCount, totalNum, false, dynamicInfo.ElementId); break; } } else if (StlParserUtility.IsStlElementExists(StlPageItems.ElementName, stlElementList)) { var pageCount = TranslateUtils.ToInt(dynamicInfo.QueryString["pageCount"]); var totalNum = TranslateUtils.ToInt(dynamicInfo.QueryString["totalNum"]); var pageContentsAjaxDivId = dynamicInfo.QueryString["pageContentsAjaxDivId"]; for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex != pageIndex) { continue; } await parseManager.ReplacePageElementsInDynamicPageAsync(contentBuilder, stlElementList, currentPageIndex, pageCount, totalNum, false, pageContentsAjaxDivId); break; } } await parseManager.ParseInnerContentAsync(contentBuilder); //var parsedContent = StlParserUtility.GetBackHtml(contentBuilder.ToString(), pageInfo); //return pageInfo.HeadCodesHtml + pageInfo.BodyCodesHtml + parsedContent + pageInfo.FootCodesHtml; return(contentBuilder.ToString()); }
public static string ParseDynamicContent(DynamicInfo dynamicInfo, string template) { if (string.IsNullOrEmpty(template)) { return(string.Empty); } StlCacheManager.ClearAll(); var templateInfo = TemplateManager.GetTemplateInfo(dynamicInfo.SiteId, dynamicInfo.TemplateId); var siteInfo = SiteManager.GetSiteInfo(dynamicInfo.SiteId); var pageInfo = new PageInfo(dynamicInfo.ChannelId, dynamicInfo.ContentId, siteInfo, templateInfo, new Dictionary <string, object>()) { UniqueId = 1000, UserInfo = dynamicInfo.UserInfo }; var contextInfo = new ContextInfo(pageInfo); var templateContent = StlRequestEntities.ParseRequestEntities(dynamicInfo.QueryString, template); var contentBuilder = new StringBuilder(templateContent); var stlElementList = StlParserUtility.GetStlElementList(contentBuilder.ToString()); var pageIndex = dynamicInfo.Page - 1; //如果标签中存在<stl:pageContents> if (StlParserUtility.IsStlElementExists(StlPageContents.ElementName, stlElementList)) { var stlElement = StlParserUtility.GetStlElement(StlPageContents.ElementName, stlElementList); var stlPageContentsElement = stlElement; var stlPageContentsElementReplaceString = stlElement; var pageContentsElementParser = new StlPageContents(stlPageContentsElement, pageInfo, contextInfo); var pageCount = pageContentsElementParser.GetPageCount(out var totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex == pageIndex) { var pageHtml = pageContentsElementParser.Parse(totalNum, currentPageIndex, pageCount, false); contentBuilder.Replace(stlPageContentsElementReplaceString, pageHtml); StlParserManager.ReplacePageElementsInDynamicPage(contentBuilder, pageInfo, stlElementList, currentPageIndex, pageCount, totalNum, false, dynamicInfo.AjaxDivId); break; } } } //如果标签中存在<stl:pageChannels> else if (StlParserUtility.IsStlElementExists(StlPageChannels.ElementName, stlElementList)) { var stlElement = StlParserUtility.GetStlElement(StlPageChannels.ElementName, stlElementList); var stlPageChannelsElement = stlElement; var stlPageChannelsElementReplaceString = stlElement; var pageChannelsElementParser = new StlPageChannels(stlPageChannelsElement, pageInfo, contextInfo); var pageCount = pageChannelsElementParser.GetPageCount(out var totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex != pageIndex) { continue; } var pageHtml = pageChannelsElementParser.Parse(currentPageIndex, pageCount); contentBuilder.Replace(stlPageChannelsElementReplaceString, pageHtml); StlParserManager.ReplacePageElementsInDynamicPage(contentBuilder, pageInfo, stlElementList, currentPageIndex, pageCount, totalNum, false, dynamicInfo.AjaxDivId); break; } } //如果标签中存在<stl:pageSqlContents> else if (StlParserUtility.IsStlElementExists(StlPageSqlContents.ElementName, stlElementList)) { var stlElement = StlParserUtility.GetStlElement(StlPageSqlContents.ElementName, stlElementList); var stlPageSqlContentsElement = stlElement; var stlPageSqlContentsElementReplaceString = stlElement; var pageSqlContentsElementParser = new StlPageSqlContents(stlPageSqlContentsElement, pageInfo, contextInfo); var pageCount = pageSqlContentsElementParser.GetPageCount(out var totalNum); for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex != pageIndex) { continue; } var pageHtml = pageSqlContentsElementParser.Parse(totalNum, currentPageIndex, pageCount, false); contentBuilder.Replace(stlPageSqlContentsElementReplaceString, pageHtml); StlParserManager.ReplacePageElementsInDynamicPage(contentBuilder, pageInfo, stlElementList, currentPageIndex, pageCount, totalNum, false, dynamicInfo.AjaxDivId); break; } } else if (StlParserUtility.IsStlElementExists(StlPageItems.ElementName, stlElementList)) { var pageCount = TranslateUtils.ToInt(dynamicInfo.QueryString["pageCount"]); var totalNum = TranslateUtils.ToInt(dynamicInfo.QueryString["totalNum"]); var pageContentsAjaxDivId = dynamicInfo.QueryString["pageContentsAjaxDivId"]; for (var currentPageIndex = 0; currentPageIndex < pageCount; currentPageIndex++) { if (currentPageIndex != pageIndex) { continue; } StlParserManager.ReplacePageElementsInDynamicPage(contentBuilder, pageInfo, stlElementList, currentPageIndex, pageCount, totalNum, false, pageContentsAjaxDivId); break; } } StlParserManager.ParseInnerContent(contentBuilder, pageInfo, contextInfo); //var parsedContent = StlParserUtility.GetBackHtml(contentBuilder.ToString(), pageInfo); //return pageInfo.HeadCodesHtml + pageInfo.BodyCodesHtml + parsedContent + pageInfo.FootCodesHtml; return(contentBuilder.ToString()); }
public static List <DynamicInfo> GetDynamicList(int start, int count, string searchContent = "", int searchClass = 0) { string selVal; if (searchClass == 0)//无搜索 { selVal = ""; } else if (searchClass == 1)//搜索的为标签 { selVal = "AND ID IN (SELECT ArticleID FROM TagMap WHERE TagID='" + searchContent + "')"; } else { selVal = "AND (ArticleContent LIKE '%" + searchContent + "%' OR Title LIKE '%" + searchContent + "%')"; } string strSQL = "SELECT TOP " + count + " * FROM Article WHERE State = '1' " + selVal + " AND ID NOT IN(SELECT TOP " + start + " ID FROM Article WHERE State = '1' " + selVal + " ORDER BY StickState DESC, UploadTime DESC) ORDER BY StickState DESC, UploadTime DESC"; SqlDataReader DynamicDataReader = DAL.SQLHelper.GetReader(strSQL); List <DynamicInfo> DynamicList = new List <DynamicInfo>(); while (DynamicDataReader.Read()) { DynamicInfo info = new DynamicInfo(); info.DynamicID = DynamicDataReader["ID"].ToString(); string str1, str2; switch (Convert.ToInt32(DynamicDataReader["Class"].ToString())) { case 0: str1 = "文章"; str2 = "/pages/articleDetail.aspx?id=" + info.DynamicID; break; case 1: str1 = "软件"; str2 = "/pages/softwareDetail.aspx?id=" + info.DynamicID; break; case 2: str1 = "专题"; str2 = DynamicDataReader["ExtraContent"].ToString(); break; default: str1 = "无效的分类"; str2 = "#"; break; } info.DynamicClass = str1; info.DynamicLink = str2; info.DynamicTitle = DynamicDataReader["Title"].ToString(); info.DynamicUploadTime = Convert.ToDateTime(DynamicDataReader["UploadTime"].ToString()).ToString("MM/dd/yyyy"); info.DynamicBannerURL = DynamicDataReader["BannerURL"].ToString(); HtmlToText convert = new HtmlToText(); str1 = convert.Convert(DynamicDataReader["ArticleContent"].ToString()); if (str1.Length > 80) { str1 = str1.Substring(0, 80); } info.DynamicContent = str1 + "..."; info.DynamicViewtimes = DynamicDataReader["BrowseTimes"].ToString(); strSQL = "SELECT TOP 3 * FROM Tag WHERE ID IN (SELECT TagID FROM TagMap WHERE ArticleID = @ArticleID)"; SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@ArticleID", DynamicDataReader["ID"].ToString()) }; SqlDataReader DynamicTagsDataReader = DAL.SQLHelper.GetReader(strSQL, paras); while (DynamicTagsDataReader.Read()) { info.DynamicTagsName += DynamicTagsDataReader["TagName"] + ","; info.DynamicTagsID += DynamicTagsDataReader["ID"] + ","; } DynamicList.Add(info); } return(DynamicList); }
public DynamicInfo CreateDynamic(Expression exP, Expression exR, int input, int output, bool useMath) { TypeDefinition injType = CecilHelper.Inject(Module, injection.MainModule.GetType("PolyInjection")); injType.Name = ObfuscationHelper.Instance.GetRandomName(); FieldDefinition dmInstance = injType.Fields.FirstOrDefault(x => x.Name == "dm"); FieldDefinition delInstance = injType.Fields.FirstOrDefault(x => x.Name == "Invoke"); MethodDefinition initMd = injType.Methods.FirstOrDefault(x => x.Name == "Initialize"); initMd.Name = "DYN___" + initMd.Name; ILProcessor ilp = initMd.Body.GetILProcessor(); for (int i = 0; i < initMd.Body.Instructions.Count; i++) { Instruction inst = initMd.Body.Instructions[i]; if (inst.Operand is FieldReference) { if ((inst.Operand as FieldReference).Name == "dm") { inst.Operand = dmInstance; } else if ((inst.Operand as FieldReference).Name == "Invoke") { inst.Operand = delInstance; } if ((inst.Operand as FieldReference).Name == "MethodName") { inst.OpCode = OpCodes.Ldstr; inst.Operand = ObfuscationHelper.GetRandomString(rand.Next(1, 5)); } } } // Ldarg_0 is evald CecilVisitor cv = new Visitors.CecilVisitor(exR, new Instruction[] { Instruction.Create(OpCodes.Ldarg_0) }); List <Instruction> cvInsts = cv.GetInstructions().ToList(); for (int i = 0; i < cvInsts.Count; i++) { Instruction cvInst = cvInsts[i]; if (cvInst.OpCode == OpCodes.Ldarg_0) { cvInsts.Insert(i + 1, Instruction.Create(OpCodes.Conv_I4)); i += 1; } } for (int i = 0; i < initMd.Body.Instructions.Count; i++) { Instruction inst = initMd.Body.Instructions[i]; if (inst.OpCode == OpCodes.Ldsfld && (inst.Operand as FieldReference).Name == "Conv_R8") { // Go back two, start inserting i -= 2; Instruction real = initMd.Body.Instructions[i]; List <Instruction> ei = ConvertToEmit(initMd, cvInsts, useMath);//new List<Instruction>(); ei.Reverse(); foreach (Instruction a in ei) { initMd.Body.Instructions.Insert(i + 1, a); } initMd.Body.ComputeHeader(); initMd.Body.ComputeOffsets(); initMd.Body.OptimizeMacros(); break; } } Module.Types.Add(injType); DynamicInfo di = new DynamicInfo(); di.DelegateInstance = delInstance; di.DelegateType = injType.NestedTypes[0]; di.Wrapper = injType; di.Input = input; di.Output = output; di.Exp = exP; Dynamics.Add(di); return(di); }
/// <summary> /// Sets the name of the element of the type this column shall be mapped to, if any. /// </summary> /// <param name="name">The name of the element, or null.</param> /// <returns>This instance to permit a fluent chaining syntax.</returns> public MapColumn <T> SetElementName(Func <dynamic, object> name) { ElementName = DynamicInfo.ParseName(name); return(this); }