Beispiel #1
0
        /// <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;
                        }
                    }
                }
            }
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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
            });
        }
Beispiel #5
0
        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));
        }
Beispiel #6
0
        public static void Get(DynamicInfo info)
        {
            var item = info.GetTasks();

            Console.WriteLine("系统中共有进程数    :" + item.Total);
            Console.WriteLine("正在运行的进程数    :" + item.Running);
        }
Beispiel #7
0
        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));
            }
        }
Beispiel #9
0
 public SystemEnvironment()
 {
     if (IsWindows())
     {
     }
     else
     {
         info = new DynamicInfo();
     }
 }
Beispiel #10
0
        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)
            });
        }
Beispiel #11
0
        /// <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;
            }
        }
Beispiel #12
0
        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));
        }
Beispiel #13
0
        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}");
            }
        }
Beispiel #14
0
        /// <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);
        }
Beispiel #15
0
        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);
        }
Beispiel #16
0
        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)));
        }
Beispiel #17
0
        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);
        }
Beispiel #18
0
        /// <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);
        }
Beispiel #19
0
        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));
            }
        }
Beispiel #20
0
        /// <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);
        }
Beispiel #21
0
        /// <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);
        }
Beispiel #22
0
        /// <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;
                }
            }
        }
Beispiel #23
0
        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);
        }
Beispiel #24
0
        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());
        }
Beispiel #25
0
        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());
        }
Beispiel #26
0
    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);
    }
Beispiel #27
0
        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);
        }
Beispiel #28
0
 /// <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);
 }