private void BuildMethodBlocks(CoverageReport.MethodDescriptor md, MethodItem mdItem)
 {
     foreach (CoverageReport.InnerBlockData ibd in md.insBlocks)
     {
         CoveredVariantItem cvItem = new CoveredVariantItem();
         cvItem.Blocks = ibd.blocks;
         mdItem.AddBlock(cvItem);
     }
 }
        private static MethodItem[] BuildMethods(Type interfaceType)
        {
            var methodInfoArray = interfaceType.GetMethods();
            var methods         = new MethodItem[methodInfoArray.Length];

            for (int i = 0; i < methodInfoArray.Length; i++)
            {
                methods[i] = new MethodItem {
                    Info = methodInfoArray[i]
                };
                var attribute = GetRuntimeDllImportAttribute(methodInfoArray[i]);
                if (attribute == null)
                {
                    throw new Exception(string.Format("Method '{0}' of interface '{1}' should be marked with the RuntimeDllImport attribute",
                                                      methodInfoArray[i].Name, interfaceType.Name));
                }
                methods[i].DllImportAttribute = attribute;
            }
            return(methods);
        }
예제 #3
0
        public static object Invoke(Type interfacetype, WrapBase wrapBase, MethodInfo methodInfo, List <Object> args)
        {
            // if (InternalConfig.EmitTestCode)
            // {
            //     Console.WriteLine("InvokeProxy args:");
            //     args.ForEach(x=>{
            //         Console.WriteLine((x??new object()).ToString());
            //     });
            // }

            try
            {
                if (false == Lark.InterfaceWrapCache.ContainsKey(interfacetype))
                {
                    throw new LarkException("RuntimeException:wrapcache is not exists!");
                }
                InterfaceItem interfaceItem = Lark.InterfaceWrapCache[interfacetype];

                if (false == interfaceItem.WrapContext.MethodCache.ContainsKey(methodInfo))
                {
                    throw new LarkException("RuntimeException:MethodCache is not exists!");
                }

                MethodItem methodItem = interfaceItem.WrapContext.MethodCache[methodInfo];

                //todo need a pool of RequestCreContext
                RequestCreContext requestCreContext = RequestCreContext.Create(interfaceItem.WrapContext, methodItem.WrapContext, wrapBase);
                requestCreContext.ParameterValues.Value = args;

                return(HttpCreater.Create(requestCreContext).DealResponse(methodInfo.ReturnType));
            }
            catch (System.Exception ex)
            {
                System.Console.WriteLine(ex.ToString());
                throw ex;
            }
        }
예제 #4
0
        private static void DisplayTraceResult(List <TraceItem> result, int indent = 0)
        {
            foreach (TraceItem item in result)
            {
                for (int i = 0; i < indent; i++)
                {
                    Console.Write("  ");
                }

                if (item is ThreadItem)
                {
                    Console.WriteLine($"thread #{(item as ThreadItem).ThreadID} - {item.ElapsedMilliseconds} ms:");
                }
                else if (item is MethodItem)
                {
                    MethodItem mItem = item as MethodItem;
                    Console.WriteLine($"{mItem.MethodClassName} - {mItem.MethodName} - {mItem.ElapsedMilliseconds} ms");
                }
                if (item.SubMethods != null)
                {
                    DisplayTraceResult(item.SubMethods, indent + 2);
                }
            }
        }
예제 #5
0
        public SimpleAssemblyProvider(string testFileFullPath)
        {
            //uchováme cestu k "definujícímu" souboru
            _fullPath = testFileFullPath;

            //jméno assembly odvodíme od názvu souboru
            _name = Path.GetFileName(_fullPath);

            //připravíme kontejner kam vložíme definovanou metodu
            _methods = new HashedMethodContainer();

            //vytvoření metody začneme přípravou typu, kde je definovaná
            _declaringType = TypeDescriptor.Create("MEFEditor.ProviderTest");
            //určíme jméno metody
            var methodName = "GetDefiningAssemblyName";
            //návratový typ metody
            var returnType = TypeDescriptor.Create <string>();

            //z definovaných údajů můžeme vytvořit popis
            //metody, která nebude mít žádné parametry a bude statická
            var methodInfo = new TypeMethodInfo(
                _declaringType, methodName, returnType,
                ParameterTypeInfo.NoParams,
                isStatic: true,
                methodTypeArguments: TypeDescriptor.NoDescriptors);

            //k dokončení definice metody stačí vytvořit
            //generátor jejích analyzačních instrukcí
            var methodGenerator = new DirectedGenerator(emitDirector);

            //definovanou metodu vytvoříme
            var method = new MethodItem(methodGenerator, methodInfo);

            //aby byla metoda dohledatelná, musíme ji ještě zaregistrovat
            _methods.AddItem(method);
        }
예제 #6
0
        public int CreateNewRecipe(RecipeVM recipe)
        {
            try
            {
                var entity = new Recipe();
                entity.CategoryId           = recipe.CategoryId;
                entity.Name                 = recipe.Name;
                entity.DescriptionPrimary   = recipe.DescriptionPrimary;
                entity.DescriptionSecondary = recipe.DescriptionSecondary;
                entity.Ingredients          = new List <Ingredient>();
                for (int i = 0; i < recipe.Ingredients.Count; i++)
                {
                    var currentIngredient = recipe.Ingredients[i];
                    if (!string.IsNullOrEmpty(currentIngredient.Name))
                    {
                        var ingredient = new Ingredient();
                        _mapper.Map(currentIngredient, ingredient);
                        ingredient.PositionNo = i + 1;
                        entity.Ingredients.Add(ingredient);
                    }
                }
                entity.MethodItems = new List <MethodItem>();
                for (int i = 0; i < recipe.MethodItems.Count; i++)
                {
                    var currentMethodItem = recipe.MethodItems[i];
                    if (!string.IsNullOrEmpty(currentMethodItem.Text))
                    {
                        var methodItem = new MethodItem();
                        _mapper.Map(currentMethodItem, methodItem);
                        methodItem.StepNo = i + 1;
                        entity.MethodItems.Add(methodItem);
                    }
                }

                // trim file to convert to base64
                if (!string.IsNullOrEmpty(recipe.ImageFile))
                {
                    var    base64     = recipe.ImageFile.Substring(recipe.ImageFile.LastIndexOf(',') + 1);
                    byte[] imageBytes = Convert.FromBase64String(base64);

                    using (var stream = new MemoryStream(imageBytes))
                    {
                        IFormFile file         = new FormFile(stream, 0, imageBytes.Length, "", "");
                        var       fileNameTask = _azureBlobService.UploadSingleAsync(file, imageContainerName);
                        entity.ImageUrl = fileNameTask.Result;
                    }
                }

                //add image
                // will be receiving a base64 byte array from front end
                //var file = recipe.Image;
                //_azureBlobService.UploadSingleAsync()
                _db.Recipes.Add(entity);
                _db.SaveChanges();
                return(entity.RecipeId);
            }
            catch (Exception e)
            {
                var xx = e;
                return(0);
            }
        }
예제 #7
0
        public int EditRecipe(RecipeVM recipe)
        {
            var entity = _db.Recipes
                         .Include(r => r.Category)
                         .FirstOrDefault(rcp => rcp.RecipeId == recipe.RecipeId);

            // edit existing entity
            if (entity == null)
            {
                entity = new Recipe();
            }

            //_db.Recipes.Update(entity);

            //REMOVE existing values from lists
            var recipeIngredients = _db.Ingredients.Where(i => i.RecipeId == entity.RecipeId).ToList();

            _db.Ingredients.RemoveRange(recipeIngredients);

            var methodItems = _db.MethodItems.Where(i => i.RecipeId == entity.RecipeId).ToList();

            _db.MethodItems.RemoveRange(methodItems);

            //foreach (var ingredient in entity.Ingredients.ToList())
            //{
            //    _db.Ingredients.Remove(ingredient);
            //}
            //foreach (var methodItem in entity.MethodItems.ToList())
            //{
            //    _db.MethodItems.Remove(methodItem);
            //}
            _db.SaveChanges();
            _mapper.Map(recipe, entity);
            entity.Category    = _db.Categories.FirstOrDefault(c => c.CategoryId == recipe.CategoryId);
            entity.CategoryId  = recipe.CategoryId;
            entity.Ingredients = new List <Ingredient>();
            entity.MethodItems = new List <MethodItem>();

            for (int i = 0; i < recipe.Ingredients.ToList().Count; i++)
            {
                var currentIngredient = recipe.Ingredients[i];
                if (!string.IsNullOrEmpty(currentIngredient.Name))
                {
                    var ingredient = new Ingredient();

                    ingredient.Name       = currentIngredient.Name;
                    ingredient.Measure    = currentIngredient.Measure;
                    ingredient.Quantity   = currentIngredient.Quantity;
                    ingredient.PositionNo = i + 1;
                    ingredient.RecipeId   = entity.RecipeId;
                    ingredient.Seperator  = currentIngredient.Seperator;
                    _db.Ingredients.Add(ingredient);
                }
            }
            for (int i = 0; i < recipe.MethodItems.Count; i++)
            {
                var currentMethodItem = recipe.MethodItems[i];
                if (!string.IsNullOrEmpty(currentMethodItem.Text))
                {
                    var methodItem = new MethodItem();
                    methodItem.Text      = currentMethodItem.Text;
                    methodItem.StepNo    = i + 1;
                    methodItem.RecipeId  = entity.RecipeId;
                    methodItem.Seperator = currentMethodItem.Seperator;
                    _db.MethodItems.Add(methodItem);
                }
            }

            // remove the existing image file from Azure
            if (entity.ImageUrl != null)
            {
                _azureBlobService.DeleteByNameAsync(entity.ImageUrl, imageContainerName);
            }

            // trim file to convert to base64
            if (!string.IsNullOrEmpty(recipe.ImageFile))
            {
                var    base64     = recipe.ImageFile.Substring(recipe.ImageFile.LastIndexOf(',') + 1);
                byte[] imageBytes = Convert.FromBase64String(base64);

                using (var stream = new MemoryStream(imageBytes))
                {
                    IFormFile file         = new FormFile(stream, 0, imageBytes.Length, "", "");
                    var       fileNameTask = _azureBlobService.UploadSingleAsync(file, imageContainerName);
                    entity.ImageUrl = fileNameTask.Result;
                }
            }

            //_db.Recipes.Update(entity);

            _db.SaveChanges();

            return(entity.RecipeId);
        }
        public void SetMethodInformation(System.Reflection.MethodInfo[] methods, string selectedMethodName, ParameterCollection selectedParameters, DataObjectMethodType methodType, System.Type dataObjectType)
        {
            try
            {
                this._signatureTextBox.Text = string.Empty;
                switch (methodType)
                {
                    case DataObjectMethodType.Select:
                        this._helpLabel.Text = System.Design.SR.GetString("ObjectDataSourceMethodEditor_SelectHelpLabel");
                        break;

                    case DataObjectMethodType.Update:
                        this._helpLabel.Text = System.Design.SR.GetString("ObjectDataSourceMethodEditor_UpdateHelpLabel");
                        break;

                    case DataObjectMethodType.Insert:
                        this._helpLabel.Text = System.Design.SR.GetString("ObjectDataSourceMethodEditor_InsertHelpLabel");
                        break;

                    case DataObjectMethodType.Delete:
                        this._helpLabel.Text = System.Design.SR.GetString("ObjectDataSourceMethodEditor_DeleteHelpLabel");
                        break;
                }
                this._methodComboBox.BeginUpdate();
                this._methodComboBox.Items.Clear();
                MethodItem item = null;
                bool flag = false;
                foreach (System.Reflection.MethodInfo info in methods)
                {
                    if (this.FilterMethod(info, methodType))
                    {
                        bool flag2 = false;
                        DataObjectMethodAttribute attribute = Attribute.GetCustomAttribute(info, typeof(DataObjectMethodAttribute), true) as DataObjectMethodAttribute;
                        if ((attribute != null) && (attribute.MethodType == methodType))
                        {
                            if (!flag)
                            {
                                this._methodComboBox.Items.Clear();
                            }
                            flag = true;
                            flag2 = true;
                        }
                        else if (!flag)
                        {
                            flag2 = true;
                        }
                        bool flag3 = ObjectDataSourceDesigner.IsMatchingMethod(info, selectedMethodName, selectedParameters, dataObjectType);
                        if (flag2 || flag3)
                        {
                            MethodItem item2 = new MethodItem(info);
                            this._methodComboBox.Items.Add(item2);
                            if (flag3)
                            {
                                item = item2;
                            }
                            else if (((attribute != null) && (attribute.MethodType == methodType)) && (attribute.IsDefault && (selectedMethodName.Length == 0)))
                            {
                                item = item2;
                            }
                        }
                    }
                }
                if (methodType != DataObjectMethodType.Select)
                {
                    this._methodComboBox.Items.Insert(0, new MethodItem(null));
                }
                this._methodComboBox.InvalidateDropDownWidth();
                this._methodComboBox.SelectedItem = item;
            }
            finally
            {
                this._methodComboBox.EndUpdate();
            }
        }
예제 #9
0
        private static Dictionary <string, AMemberItem> Parse(XDocument document)
        {
            Dictionary <string, AMemberItem> items = new Dictionary <string, AMemberItem>();

            AMemberItem HandleTypeItem(XElement typeElement)
            {
                string parentNamespace = typeElement.GetNamespace();

                if (!items.TryGetValue($"{TypeItem.Id}{parentNamespace}", out AMemberItem parent) &&
                    !items.TryGetValue($"{NamespaceItem.Id}{parentNamespace}", out parent))
                {
                    parent = new NamespaceItem(parentNamespace);
                    items.Add($"{NamespaceItem.Id}{parent.Name}", parent);
                }

                TypeItem typeItem = new TypeItem(parent, typeElement);

                items.Add(typeElement.GetFullName(), typeItem);

                return(typeItem);
            }

            foreach (XElement element in document.GetMembers().Where(e => e.GetFullName().StartsWith(TypeItem.Id)))
            {
                HandleTypeItem(element);
            }

            foreach (XElement element in document.GetMembers().Where(e => !e.GetFullName().StartsWith(TypeItem.Id)))
            {
                string parentFullName = element.GetNamespace();
                if (!items.TryGetValue($"{TypeItem.Id}{parentFullName}", out AMemberItem parent))
                {
                    parent = HandleTypeItem(TypeItem.CreateEmptyXElement(parentFullName));
                }
                AMemberItem newItem;

                string fullName = element.GetFullName();
                if (fullName.StartsWith(FieldItem.Id))
                {
                    newItem = new FieldItem(parent, element);
                }
                else if (fullName.StartsWith(PropertyItem.Id))
                {
                    newItem =
                        fullName.EndsWith(")")
                        ? new IndexItem(new MethodItem(parent, element))
                        : new PropertyItem(parent, element) as AMemberItem;
                }
                else if (fullName.StartsWith(MethodItem.Id))
                {
                    newItem = new MethodItem(parent, element);
                    newItem =
                        newItem.Name.StartsWith("#")
                        ? new ConstructorItem(newItem as MethodItem)
                        : OperatorItem.HandleOperator(newItem as MethodItem);
                }
                else if (fullName.StartsWith(EventItem.Id))
                {
                    newItem = new EventItem(parent, element);
                }
                else
                {
                    throw new Exception($"unhandled doc item {fullName}");
                }

                items.Add(fullName, newItem);
            }

            return(items);
        }
 private void BuildMethods(CoverageReport.MethodDescriptor[] mdList, ClassItem classItem)
 {
     foreach (CoverageReport.MethodDescriptor md in mdList)
     {
         MethodItem mdItem = new MethodItem(md, classItem);
         BuildMethodBlocks(md, mdItem);
         classItem.AddMethod(mdItem);
     }
 }
예제 #11
0
        /// <summary>
        /// Makes a new item.
        /// </summary>
        /// <param name="exception">The exception.</param>
        /// <param name="method">The method.</param>
        /// <param name="group">The group.</param>
        /// <returns></returns>
        protected ItemInfo MakeItem(ThrownException exception, Method method = null, ListViewGroup group = null)
        {
            bool isMethod = (method != null);
            bool isProperty = isMethod && method.MethodBase.IsProperty();
            bool isThrow = !isMethod && (exception != null);

            if (!isMethod)
            {
                method = exception.Method;
            }

            ListViewItem item;
            PropertyInfo pi = null;
            if (isProperty)
            {
                bool getter = method.MethodBase.Name.StartsWith("get_");
                pi = method.MethodBase.GetMethodProperty();
                item = new ListViewItem(string.Format(CultureInfo.InvariantCulture, "{0} ({1})", pi.Name, getter ? "get" : "set"));
            }
            else
            {
                item = new ListViewItem(method.ToString());
            }

            if (isProperty)
            {
                item.ImageKey = NodeInfo.ImageKeyFromObject(pi);
            }
            else if (isMethod)
            {
                // use the method for the icon
                item.ImageKey = NodeInfo.ImageKeyFromObject(method.MethodBase);
            }
            else
            {
                // use the exception for the icon
                item.ImageKey = NodeInfo.ImageKeyFromObject(exception.Exception);
            }

            ItemInfo info;
            MethodItem me = new MethodItem(method, exception);

            if (exception == null)
            {
                info = new ItemInfo(item, me, NodeType.Method);
                item.SubItems.Add("");
            }
            else
            {
                info = new ItemInfo(item, me, NodeType.Method);
                info.Expandable = !isThrow;
                item.SubItems.Add(exception.Exception.Name);

            }

            item.Tag = info;

            item.SubItems.Add(method.MethodBase.DeclaringType.Name);
            item.SubItems.Add(method.MethodBase.DeclaringType.Module.Name);

            item.IndentCount = 1;

            if (group != null)
            {
                item.Group = group;
            }

            return info;
        }
예제 #12
0
        private string GetRootModel(int tab, MethodItem methodItem)
        {
            var sb = new StringBuilder();

            tab++;
            var className = methodItem.RequestUri.Split('/').Skip(1).ToList();

            AppendLine(sb, tab, "///<summary>");
            if (!string.IsNullOrWhiteSpace(methodItem.AlertText))
            {
                AppendLine(sb, tab, "/// " + methodItem.AlertText);
            }
            AppendLine(sb, tab, "/// " + methodItem.MethodName);
            AppendLine(sb, tab, "/// " + methodItem.DescriptionUrl);

            AppendLine(sb, tab, "///</summary>");
            AppendLine(sb, tab, $@"[Method(Url=""{methodItem.RequestUri}/"")]");
            AppendLine(sb, tab, $@"[DescriptionUrl(Url= ""{methodItem.DescriptionUrl}"")]");

            if (methodItem.AlertText?.Trim() == "Внимание! Метод будет отключён.")
            {
                AppendLine(sb, tab, $@"[Obsolete]");
            }
            AppendLine(sb, tab, "public class Request" + GetNormalizedName(className) + ":IRequest");
            AppendLine(sb, tab, "{");
            tab++;
            foreach (var requestField in methodItem.RequestFields)
            {
                if (requestField.FieldDescription.Contains("Внимание! Поле будет отключено."))
                {
                    continue;
                }
                var  fieldName  = GetNormalizedName(requestField.FieldName.Split(new[] { ',', '_' }, StringSplitOptions.RemoveEmptyEntries));
                bool isRequered = false;
                sb.AppendLine();
                AppendLine(sb, tab, "///<summary>");
                if (fieldName.StartsWith("*"))
                {
                    AppendLine(sb, tab, "///Обязательный параметер");
                    fieldName  = fieldName.Substring(1);
                    isRequered = true;
                }
                AppendLine(sb, tab, "///" + requestField.FieldDescription.Trim().Replace("\r\n", "\r\n///").Replace("\n", "\n///"));
                AppendLine(sb, tab, "///" + requestField.FieldType);
                AppendLine(sb, tab, "///</summary>");

                var jsonFieldName = requestField.FieldName;
                if (jsonFieldName.StartsWith("*"))
                {
                    jsonFieldName = jsonFieldName.Substring(1);
                }

                AppendLine(sb, tab, $@"[JsonProperty(""{jsonFieldName}"")]");
                if (isRequered)
                {
                    AppendLine(sb, tab, "[FieldIsMandatory]");
                }
                Append(sb, tab, "public ");
                sb.Append("string");
                sb.Append(" ");
                sb.Append(GetNormalizedName(new[] { fieldName }));
                sb.AppendLine(" {get; set;}");
            }
            tab--;
            AppendLine(sb, tab, "}");
            AppendLine(sb, tab, "");

            AppendLine(sb, tab, "///<summary>");
            AppendLine(sb, tab, "///" + methodItem.MethodName);
            AppendLine(sb, tab, "///</summary>");
            AppendLine(sb, tab, "public class Response" + GetNormalizedName(className) + ":IResponse");
            AppendLine(sb, tab, "{");
            tab++;
            foreach (var responseField in methodItem.RootResponse.ResponseFieldItems)
            {
                if (responseField.FieldDescription.Contains("Внимание! Поле будет отключено."))
                {
                    continue;
                }
                var fieldName = GetNormalizedName(responseField.FieldName.Split(new[] { ',', '_' }, StringSplitOptions.RemoveEmptyEntries));

                sb.AppendLine();
                AppendLine(sb, tab, "///<summary>");

                AppendLine(sb, tab, "///" + responseField.FieldDescription.Trim().Replace("\r\n", "\r\n///").Replace("\n", "\n///"));
                AppendLine(sb, tab, "///</summary>");
                AppendLine(sb, tab, $@"[JsonProperty(""{responseField.FieldName}"")]");
                Append(sb, tab, "public ");
                sb.Append(GetTypeString(responseField.FieldType));
                sb.Append(" ");

                sb.Append(fieldName);
                sb.AppendLine(" {get; set;}");
            }

            var subClass = new StringBuilder();

            foreach (var chieldClass in methodItem.RootResponse.ResponseClasses.Values)
            {
                if (chieldClass.ClassDescription.Contains("Внимание! Поле будет отключено."))
                {
                    continue;
                }

                var createClassModel = GetClass(GetNormalizedName(className), chieldClass);
                var typeName         = createClassModel.Item1;
                var classModel       = createClassModel.Item2;
                subClass.Append(classModel);


                var fieldName = GetNormalizedName(chieldClass.ClassName.Split(new[] { ',', '_' }, StringSplitOptions.RemoveEmptyEntries));

                sb.AppendLine();
                AppendLine(sb, tab, "///<summary>");

                AppendLine(sb, tab, "///" + chieldClass.ClassDescription.Trim().Replace("\r\n", "\r\n///").Replace("\n", "\n///"));
                AppendLine(sb, tab, "///</summary>");
                AppendLine(sb, tab, $@"[JsonProperty(""{chieldClass.ClassName}"")]");
                Append(sb, tab, "public ");
                sb.Append(typeName);
                sb.Append(" ");

                sb.Append(fieldName);
                sb.AppendLine(" {get; set;}");
            }

            tab--;
            AppendLine(sb, tab, "}");
            tab--;
            AppendLine(sb, tab, subClass.ToString());

            return(sb.ToString());
        }
        private void RunTest(MethodItem item, Action callback)
        {
            // Invoke the test.
            Invoke(item);

            // Execute next test in sequence.
            var next = methods.NextItem(item, false);
            if (next != null)
            {
                DelayedRunTest(next, callback);
            }
            else
            {
                if (callback != null) callback();
            }
        }
        private void Invoke(MethodItem item)
        {
            // Setup initial conditions.
            if (!item.Method.Attribute.AllowAutoRun) return;

            try
            {
                // Reset the test-class.  This will cause the Default initialize method to be invoked.
                item.TestClass.Reload();

                // NB: The 'DefaultViewTest' is exeuted during the 'Reload()' operation.
                var method = item.Method;
                if (method != item.TestClass.DefaultViewTest) method.Execute();

                // Log success.
                passed.Add(item.MethodInfo);
            }
            catch (Exception)
            {
                failed.Add(item.MethodInfo);
            }
        }
 private void DelayedRunTest(MethodItem item, Action callback)
 {
     DelayedAction.Invoke(Interval, () => RunTest(item, callback));
 }
예제 #16
0
        public void SetMethodInformation(System.Reflection.MethodInfo[] methods, string selectedMethodName, ParameterCollection selectedParameters, DataObjectMethodType methodType, System.Type dataObjectType)
        {
            try
            {
                this._signatureTextBox.Text = string.Empty;
                switch (methodType)
                {
                case DataObjectMethodType.Select:
                    this._helpLabel.Text = System.Design.SR.GetString("ObjectDataSourceMethodEditor_SelectHelpLabel");
                    break;

                case DataObjectMethodType.Update:
                    this._helpLabel.Text = System.Design.SR.GetString("ObjectDataSourceMethodEditor_UpdateHelpLabel");
                    break;

                case DataObjectMethodType.Insert:
                    this._helpLabel.Text = System.Design.SR.GetString("ObjectDataSourceMethodEditor_InsertHelpLabel");
                    break;

                case DataObjectMethodType.Delete:
                    this._helpLabel.Text = System.Design.SR.GetString("ObjectDataSourceMethodEditor_DeleteHelpLabel");
                    break;
                }
                this._methodComboBox.BeginUpdate();
                this._methodComboBox.Items.Clear();
                MethodItem item = null;
                bool       flag = false;
                foreach (System.Reflection.MethodInfo info in methods)
                {
                    if (this.FilterMethod(info, methodType))
                    {
                        bool flag2 = false;
                        DataObjectMethodAttribute attribute = Attribute.GetCustomAttribute(info, typeof(DataObjectMethodAttribute), true) as DataObjectMethodAttribute;
                        if ((attribute != null) && (attribute.MethodType == methodType))
                        {
                            if (!flag)
                            {
                                this._methodComboBox.Items.Clear();
                            }
                            flag  = true;
                            flag2 = true;
                        }
                        else if (!flag)
                        {
                            flag2 = true;
                        }
                        bool flag3 = ObjectDataSourceDesigner.IsMatchingMethod(info, selectedMethodName, selectedParameters, dataObjectType);
                        if (flag2 || flag3)
                        {
                            MethodItem item2 = new MethodItem(info);
                            this._methodComboBox.Items.Add(item2);
                            if (flag3)
                            {
                                item = item2;
                            }
                            else if (((attribute != null) && (attribute.MethodType == methodType)) && (attribute.IsDefault && (selectedMethodName.Length == 0)))
                            {
                                item = item2;
                            }
                        }
                    }
                }
                if (methodType != DataObjectMethodType.Select)
                {
                    this._methodComboBox.Items.Insert(0, new MethodItem(null));
                }
                this._methodComboBox.InvalidateDropDownWidth();
                this._methodComboBox.SelectedItem = item;
            }
            finally
            {
                this._methodComboBox.EndUpdate();
            }
        }
예제 #17
0
        protected virtual void OnShowSource(MethodItem methodItem)
        {
            ShowSourceEventArgs e = new ShowSourceEventArgs ();
            e.methodItem = methodItem;

            OnShowSource (e);
        }
예제 #18
0
            static public void TypeInstantiated(Type type)
            {
                var        _isMethod = type.DeclaringType != null && type.DeclaringType.Name == "<Intermediate>";
                Item       _item;
                MethodBase _genericTypeDefinitionMethod  = null;
                MethodBase _constructedGenericTypeMethod = null; // possible a generic method definition
                MethodBase _constructedgenericMethod     = null;
                int        _neptuneMethodIndex           = NeptuneMethodIndexUninitialized;

                if (_isMethod)
                {
                    _neptuneMethodIndex = (int)type.GetField("<NeptuneMethodIndex>").GetValue(null);
                    var _intermediate      = type.DeclaringType;
                    var _neptune           = _intermediate.DeclaringType;
                    var _targetType        = _neptune.DeclaringType;
                    var _genericArguments  = type.GetGenericArguments();
                    var _typeArgumentCount = 0;
                    if (_targetType.IsGenericTypeDefinition)
                    {
                        _genericTypeDefinitionMethod = GetTypeDefinitionItem(_targetType).Methods[_neptuneMethodIndex];
                        _typeArgumentCount           = _targetType.GetGenericArguments().Length;
                        _targetType = _targetType.MakeGenericType(_genericArguments.Subarray(0, _typeArgumentCount));
                    }
                    var _typeItem = GetTypeItem(_targetType);
                    _constructedGenericTypeMethod = _typeItem.Methods[_neptuneMethodIndex];
                    _typeItem.InvokedMethods[_neptuneMethodIndex] = true;
                    if (_constructedGenericTypeMethod.IsGenericMethodDefinition)
                    {
                        var _typeArguments = _targetType.IsGenericType ? _genericArguments.Subarray(_typeArgumentCount) : _genericArguments;
                        _constructedgenericMethod = ((MethodInfo)_constructedGenericTypeMethod).MakeGenericMethod(_typeArguments);
                        GetGenericMethodDefinitionItem(_constructedGenericTypeMethod).ConstructedMethods.Add(_constructedgenericMethod);
                        _item = new GenericMethodItem(_constructedgenericMethod, _neptuneMethodIndex);
                    }
                    else
                    {
                        _item = new MethodItem(_constructedGenericTypeMethod, _neptuneMethodIndex);
                    }
                }
                else
                {
                    _item = GetTypeItem(type);
                    if (!type.IsGenericType)
                    {
                        return;
                    }
                }

                m_ReadWriteLock.EnterReadLock();
                try
                {
                    if (_genericTypeDefinitionMethod != null && Aspect.Directory.ContainsKey(_genericTypeDefinitionMethod))
                    {
                        Aspect.Directory.Register(_constructedGenericTypeMethod, _neptuneMethodIndex);
                    }
                    if (_constructedgenericMethod != null && Aspect.Directory.ContainsKey(_constructedGenericTypeMethod))
                    {
                        Aspect.Directory.Register(_constructedgenericMethod, _neptuneMethodIndex);
                    }
                    foreach (var _weaver in m_ClosedWeavers)
                    {
                        _item.Weave(_weaver);
                    }
                    lock (m_Lock)
                    {
                        Extend(ref m_ConstructedGenerics, _item);
                    }
                }
                finally
                {
                    m_ReadWriteLock.ExitReadLock();
                }
            }
예제 #19
0
        private void xamDataGrid_RecordUpdated(object sender, Infragistics.Windows.DataPresenter.Events.RecordUpdatedEventArgs e)
        {
            if (e.Record.Tag == null)
            {
                return;
            }

            if (((string)e.Record.Tag).Equals("AddRecord"))  // is this the "AddRecord"?
            {
                if (e.Record.DataItem.GetType() == typeof(MethodItem))
                {
                    DataRecord methodRecord = (DataRecord)e.Record;

                    MethodItem mi = ((MethodItem)(methodRecord.DataItem));

                    MethodContainer newMethod = new MethodContainer();
                    newMethod.Description     = mi.Description;
                    newMethod.OwnerID         = mi.OwnerID;
                    newMethod.BravoMethodFile = mi.BravoMethodFile;
                    newMethod.IsPublic        = mi.IsPublic;

                    bool success = wgDB.InsertMethod(ref newMethod);
                    if (success)
                    {
                        mi.MethodID = newMethod.MethodID;

                        UnMarkAddNewRecord(methodRecord);

                        MethodItem miNew = new MethodItem();
                        miNew.Description     = "";
                        miNew.MethodID        = mi.MethodID;
                        miNew.OwnerID         = mi.OwnerID;
                        miNew.IsPublic        = false;
                        miNew.BravoMethodFile = "";

                        VM.Methods.Insert(0, miNew);

                        // mark the new Method as the AddRecord
                        RecordCollectionBase coll            = e.Record.ParentCollection;
                        DataRecord           newMethodRecord = (DataRecord)coll.ElementAt(0);
                        MarkAddNewRecord(newMethodRecord);

                        // add the AddRecord Indicator for this new method
                        ObservableCollection <FilterContainer>     exFilts = VM.ExcitationFilters;
                        ObservableCollection <FilterContainer>     emFilts = VM.EmissionsFilters;
                        ObservableCollection <SignalTypeContainer> stList  = VM.SignalTypeList;
                        IndicatorItem ii = new IndicatorItem(0, mi.MethodID, "", ref stList, ref exFilts, ref emFilts);


                        mi.Indicators.Add(ii);

                        // mark the new Indicator as the AddRecord
                        ExpandableFieldRecord expRecord       = (ExpandableFieldRecord)methodRecord.ChildRecords[0];
                        DataRecord            indicatorRecord = (DataRecord)expRecord.ChildRecords[0];

                        if (indicatorRecord.DataItem.GetType() == typeof(IndicatorItem))
                        {
                            MarkAddNewRecord(indicatorRecord);
                        }


                        // add the AddRecord CompoundPlate for this new method
                        CompoundPlateItem cpi = new CompoundPlateItem();
                        cpi.CompoundPlateID = 0;
                        cpi.MethodID        = mi.MethodID;
                        cpi.Description     = "";

                        mi.CompoundPlates.Add(cpi);

                        // mark the new CompoundPlate as the AddRecord
                        ExpandableFieldRecord expRecord1          = (ExpandableFieldRecord)methodRecord.ChildRecords[1];
                        DataRecord            compoundPlateRecord = (DataRecord)expRecord1.ChildRecords[0];

                        if (compoundPlateRecord.DataItem.GetType() == typeof(CompoundPlateItem))
                        {
                            MarkAddNewRecord(compoundPlateRecord);
                        }
                    }
                }
                else if (e.Record.DataItem.GetType() == typeof(IndicatorItem))
                {
                    IndicatorItem ii = (IndicatorItem)(e.Record.DataItem);

                    IndicatorContainer ic = new IndicatorContainer();
                    ic.Description = ii.Description;
                    ic.MethodID    = ii.MethodID;
                    ic.IndicatorID = ii.IndicatorID;
                    ic.ExcitationFilterPosition = ii.ExcitationFilterPosition;
                    ic.EmissionsFilterPosition  = ii.EmissionsFilterPosition;
                    ic.SignalType = ii.SignalType;

                    bool success = wgDB.InsertIndicator(ref ic);

                    if (success)
                    {
                        ii.IndicatorID = ic.IndicatorID;

                        UnMarkAddNewRecord(e.Record);

                        ObservableCollection <FilterContainer>     exFilts = VM.ExcitationFilters;
                        ObservableCollection <FilterContainer>     emFilts = VM.EmissionsFilters;
                        ObservableCollection <SignalTypeContainer> stList  = VM.SignalTypeList;
                        IndicatorItem iiNew = new IndicatorItem(0, ic.MethodID, "", ref stList, ref exFilts, ref emFilts);


                        MethodItem mi = (MethodItem)(((DataRecord)e.Record.ParentRecord.ParentRecord).DataItem);

                        mi.Indicators.Insert(0, iiNew);

                        DataRecord newIndicatorRecord = (DataRecord)e.Record.ParentCollection[0];
                        MarkAddNewRecord(newIndicatorRecord);
                    }
                }
                else if (e.Record.DataItem.GetType() == typeof(CompoundPlateItem))
                {
                    CompoundPlateItem cpi = (CompoundPlateItem)(e.Record.DataItem);

                    CompoundPlateContainer cpc = new CompoundPlateContainer();
                    cpc.CompoundPlateID = cpi.CompoundPlateID;
                    cpc.Description     = cpi.Description;
                    cpc.MethodID        = cpi.MethodID;

                    bool success = wgDB.InsertCompoundPlate(ref cpc);

                    if (success)
                    {
                        cpi.CompoundPlateID = cpc.CompoundPlateID;

                        UnMarkAddNewRecord(e.Record);

                        CompoundPlateItem cpiNew = new CompoundPlateItem();
                        cpiNew.Description     = "";
                        cpiNew.CompoundPlateID = 0;
                        cpiNew.MethodID        = cpc.MethodID;

                        MethodItem mi = (MethodItem)(((DataRecord)e.Record.ParentRecord.ParentRecord).DataItem);

                        mi.CompoundPlates.Insert(0, cpiNew);

                        DataRecord newCompoundPlateRecord = (DataRecord)e.Record.ParentCollection[0];
                        MarkAddNewRecord(newCompoundPlateRecord);
                    }
                }
            }
        }
예제 #20
0
        public async Task <MethodItem> ExtractMethodItem()
        {
            var methodItem = new MethodItem();

            methodItem.DescriptionUrl = MyWebBrowser.Address;

            methodItem.MethodName = await GetFromJquerySelector("#name");

            methodItem.DescriptionPath = await GetFromJquerySelector("body>div>div.b-content.clearfix>div.b-content-column>div.b-page-header.js-page-header>div>span");

            methodItem.AlertText = await GetFromJquerySelector("body > div > div.b-content.clearfix > div.b-content-column > div.b-maincontent.clearfix.js-maincontent > div.b-alert > div");

            var len = await GetFromJS <int>("$('body > div > div.b-content.clearfix > div.b-content-column > div.b-maincontent.clearfix.js-maincontent > table > tbody>tr').length");

            for (var i = 1; i <= len; i++)
            {
                var key = await GetFromJquerySelector($"body>div>div.b-content.clearfix>div.b-content-column>div.b-maincontent.clearfix.js-maincontent>table>tbody>tr:nth-child({i})>td:nth-child(1)");

                var value = await GetFromJquerySelector($"body>div>div.b-content.clearfix>div.b-content-column>div.b-maincontent.clearfix.js-maincontent>table>tbody>tr:nth-child({i})>td:nth-child(2)");

                if (key == "URI")
                {
                    methodItem.RequestUri = value;
                }
                if (key == "Протокол запроса")
                {
                    methodItem.SupportedProtocol = value;
                }
                if (key == "Метод запроса")
                {
                    methodItem.SupportedHttpMethod = value;
                }
            }

            var requestParamLen = await GetFromJS <int>("$('#parameters_block > table > tbody > tr').length");

            for (var i = 1; i <= requestParamLen; i++)
            {
                var requestItem = new RequestFieldItem();

                requestItem.FieldName = await GetFromJquerySelector($"#parameters_block > table > tbody > tr:nth-child({i}) > td:nth-child(1)");

                requestItem.FieldType = await GetFromJquerySelector($"#parameters_block > table > tbody > tr:nth-child({i}) > td:nth-child(2)");

                requestItem.FieldDescription = await GetFromJquerySelector($"#parameters_block > table > tbody > tr:nth-child({i}) > td:nth-child(3)");

                methodItem.RequestFields.Add(requestItem);

                AllHashTypes.Add("req: " + requestItem.FieldType);
            }

            var responseParamLen = await GetFromJS <int>("$('#response_block > table > tbody > tr').length");

            for (var i = 1; i <= responseParamLen; i++)
            {
                var fieldName        = (await GetFromJquerySelector($"#response_block > table > tbody > tr:nth-child({i}) > td:nth-child(1)")).Trim();
                var fieldType        = (await GetFromJquerySelector($"#response_block > table > tbody > tr:nth-child({i}) > td:nth-child(2)")).Trim();
                var fieldDescription = (await GetFromJquerySelector($"#response_block > table > tbody > tr:nth-child({i}) > td:nth-child(3)")).Trim();
                if (string.IsNullOrWhiteSpace(fieldType) && string.IsNullOrWhiteSpace(fieldName) && string.IsNullOrWhiteSpace(fieldDescription))
                {
                    continue;
                }



                var getKeys       = GetClassKeys(fieldName);
                var responseClass = methodItem.RootResponse;
                foreach (var key in getKeys)
                {
                    responseClass = responseClass.ResponseClasses[key];
                }

                if (!string.IsNullOrWhiteSpace(fieldName) &&
                    string.IsNullOrWhiteSpace(fieldDescription))
                {
                    var className = GetClassName(fieldName);
                    responseClass.ResponseClasses[className] = new ResponseClass()
                    {
                        ClassName        = className,
                        ClassDescription = fieldType
                    };
                }
                else
                {
                    var responseItem = new ResponseFieldItem()
                    {
                        FieldName        = GetClassName(fieldName),
                        FieldType        = fieldType,
                        FieldDescription = fieldDescription
                    };
                    responseClass.ResponseFieldItems.Add(responseItem);

                    AllHashTypes.Add("res: " + fieldType);
                }
            }

            return(methodItem);
        }
예제 #21
0
 public void AddMethod(MethodItem item)
 {
     methods.Add(item);
 }
예제 #22
0
 internal virtual string GetMethodInformation(MethodItem method)
 {
     return(method.Name);
 }
예제 #23
0
        private void onMethodChanged(object sender, System.EventArgs e)
        {
            MethodItem mi = (MethodItem)m_methodCB.SelectedItem;

            m_combo.MatchingMethod = mi.Value;
        }
예제 #24
0
        public MethodManager()
        {
            InitializeComponent();

            wgDB = new WaveguideDB();

            VM = new MethodManagerViewModel();

            RefreshSignalTypeList();
            RefreshFilterList();

            //Initialize data in the XamDataGrid - NOTE: A blank record is added FIRST, this is key to this approach for the XamDataGrid
            MethodItem blank = new MethodItem();

            blank.Description     = "";
            blank.BravoMethodFile = "";
            blank.OwnerID         = GlobalVars.UserID;
            blank.MethodID        = 0;
            blank.IsPublic        = false;
            VM.Methods.Add(blank);

            // load all methods for user
            bool success = wgDB.GetAllMethodsForUser(GlobalVars.UserID);

            if (success)
            {
                foreach (MethodContainer mc in wgDB.m_methodList)
                {
                    MethodItem mi = new MethodItem();
                    mi.Description     = mc.Description;
                    mi.BravoMethodFile = mc.BravoMethodFile;
                    mi.OwnerID         = mc.OwnerID;
                    mi.MethodID        = mc.MethodID;
                    mi.IsPublic        = mc.IsPublic;

                    VM.Methods.Add(mi);

                    // load all indicators for the method
                    // add blank Indicator container to hold the AddRecord
                    ObservableCollection <FilterContainer>     exFilts = VM.ExcitationFilters;
                    ObservableCollection <FilterContainer>     emFilts = VM.EmissionsFilters;
                    ObservableCollection <SignalTypeContainer> stList  = VM.SignalTypeList;
                    IndicatorItem blankInd = new IndicatorItem(0, mi.MethodID, "", ref stList, ref exFilts, ref emFilts);

                    mi.Indicators.Add(blankInd);

                    success = wgDB.GetAllIndicatorsForMethod(mc.MethodID);
                    if (success)
                    {
                        foreach (IndicatorContainer ic in wgDB.m_indicatorList)
                        {
                            IndicatorItem ii = new IndicatorItem(ic.IndicatorID, ic.MethodID, ic.Description, ic.ExcitationFilterPosition, ic.EmissionsFilterPosition, ic.SignalType, ref stList, ref exFilts, ref emFilts);

                            mi.Indicators.Add(ii);
                        }
                    }



                    // load all compound plates for the method
                    // add blank Compound Plate container to hold the AddRecord
                    CompoundPlateItem blankCP = new CompoundPlateItem();
                    blankCP.CompoundPlateID = 0;
                    blankCP.MethodID        = mi.MethodID;
                    blankCP.Description     = "";
                    mi.CompoundPlates.Add(blankCP);

                    success = wgDB.GetAllCompoundPlatesForMethod(mc.MethodID);
                    if (success)
                    {
                        foreach (CompoundPlateContainer cpc in wgDB.m_compoundPlateList)
                        {
                            CompoundPlateItem cpi = new CompoundPlateItem();
                            cpi.CompoundPlateID = cpc.CompoundPlateID;
                            cpi.MethodID        = cpc.MethodID;
                            cpi.Description     = cpc.Description;

                            mi.CompoundPlates.Add(cpi);
                        }
                    }
                }
            }



            xamDataGrid.DataContext = VM;
        }
예제 #25
0
        private void ReflectAssembly(AssemblyItem assemblyItem, Assembly asm, bool invert)
        {
            string ns;
            NamespaceItem nsItem;
            Dictionary<string, NamespaceItem> nsItems = new Dictionary<string, NamespaceItem>();

            // Add the assembly item itself to the lookup.
            _projectBrowser.AddLookup(assemblyItem, assemblyItem.GetID(), invert);

            try
            {
                Type[] types = asm.GetTypes();
            }
            catch (ReflectionTypeLoadException exc)
            {
                _logView.LogExcStr(exc, "Failed to call GetTypes on " + asm.FullName);
                return;
            }

            foreach (Type t in asm.GetTypes())
            {
                ns = t.Namespace;
                if (string.IsNullOrEmpty(ns)) ns = "(none)";

                if (!nsItems.ContainsKey(ns))
                {
                    nsItem = new NamespaceItem(ns, assemblyItem);
                    nsItems.Add(ns, nsItem);
                    assemblyItem.NameSpaces.Add(nsItem);
                    _projectBrowser.AddLookup(nsItem, nsItem.GetID(), invert);
                }
                else
                {
                    nsItem = nsItems[ns];
                }

                // Flatten nested types.
                string name = t.Name;
                if (t.IsNested)
                {
                    // Flat with .id'd name.
                    Type parentType = t.DeclaringType;
                    while (parentType != null)
                    {
                        name = parentType.Name + "." + name;
                        parentType = parentType.DeclaringType;
                    }
                }

                try
                {
                    TypeItem typeItem = new TypeItem(name, t.FullName, t, nsItem);

                    nsItem.Types.Add(typeItem);
                    _projectBrowser.AddLookup(typeItem, typeItem.GetID(), invert);

                    foreach (MethodInfo mi in GetMethods(typeItem))
                    {
                        MethodItem methodItem = new MethodItem(mi.Name, mi, typeItem);
                        typeItem.Methods.Add(methodItem);

                        _projectBrowser.AddLookup(methodItem, methodItem.GetID(), invert);
                    }

                    // Get the list of implemented interfaces.
                    typeItem.Implements = GetImplementedInterfaces(typeItem);

                    if (typeItem.TypeRef.BaseType != null)
                    {
                        typeItem.InheritsFrom = typeItem.TypeRef.BaseType.ToString();
                    }
                    else
                    {
                        typeItem.InheritsFrom = null;
                    }
                }
                catch (Exception exc)
                {
                    _logView.LogExcStr(exc, "Generic Types issue?");
                }

            }
        }
예제 #26
0
        private static Type ImplementMethodDelegate(string assemblyName, ModuleBuilder moduleBuilder, MethodItem method)
        {
            // Consts
            const MethodAttributes methodAttributes = MethodAttributes.Public | MethodAttributes.HideBySig |
                                                      MethodAttributes.NewSlot | MethodAttributes.Virtual;

            // Initial
            var delegateName    = GetDelegateName(assemblyName, method.Info);
            var delegateBuilder = moduleBuilder.DefineType(delegateName,
                                                           TypeAttributes.Public | TypeAttributes.AutoClass | TypeAttributes.Sealed, typeof(MulticastDelegate));

            // UnmanagedFunctionPointer
            var importAttribute = method.DllImportAttribute;
            var attributeCtor   = typeof(UnmanagedFunctionPointerAttribute).GetConstructor(new[] { typeof(CallingConvention) });

            if (attributeCtor == null)
            {
                throw new Exception("There is no the target constructor of the UnmanagedFunctionPointerAttribute");
            }
            var attributeBuilder = new CustomAttributeBuilder(attributeCtor, new object[] { importAttribute.CallingConvention },
                                                              new[]
            {
                typeof(UnmanagedFunctionPointerAttribute).GetField("CharSet"),
                typeof(UnmanagedFunctionPointerAttribute).GetField("BestFitMapping"),
                typeof(UnmanagedFunctionPointerAttribute).GetField("ThrowOnUnmappableChar"),
                typeof(UnmanagedFunctionPointerAttribute).GetField("SetLastError")
            },
                                                              new object[]
            {
                importAttribute.CharSet,
                importAttribute.BestFitMapping,
                importAttribute.ThrowOnUnmappableChar,
                importAttribute.SetLastError
            });

            delegateBuilder.SetCustomAttribute(attributeBuilder);

            // ctor
            var ctorBuilder = delegateBuilder.DefineConstructor(MethodAttributes.Public | MethodAttributes.HideBySig |
                                                                MethodAttributes.SpecialName | MethodAttributes.RTSpecialName, CallingConventions.Standard,
                                                                new[] { typeof(object), typeof(IntPtr) });

            ctorBuilder.SetImplementationFlags(MethodImplAttributes.CodeTypeMask);
            ctorBuilder.DefineParameter(1, ParameterAttributes.HasDefault, "object");
            ctorBuilder.DefineParameter(2, ParameterAttributes.HasDefault, "method");

            // Invoke
            var parameters    = GetParameterInfoArray(method.Info);
            var methodBuilder = DefineMethod(delegateBuilder, "Invoke", methodAttributes, method.ReturnType, parameters);

            methodBuilder.SetImplementationFlags(MethodImplAttributes.CodeTypeMask);

            // BeginInvoke
            parameters    = GetParameterInfoArray(method.Info, InfoArrayMode.BeginInvoke);
            methodBuilder = DefineMethod(delegateBuilder, "BeginInvoke", methodAttributes, typeof(IAsyncResult), parameters);
            methodBuilder.SetImplementationFlags(MethodImplAttributes.CodeTypeMask);

            // EndInvoke
            parameters    = GetParameterInfoArray(method.Info, InfoArrayMode.EndInvoke);
            methodBuilder = DefineMethod(delegateBuilder, "EndInvoke", methodAttributes, method.ReturnType, parameters);
            methodBuilder.SetImplementationFlags(MethodImplAttributes.CodeTypeMask);

            // Create type
            return(delegateBuilder.CreateType());
        }
 internal virtual string GetMethodInformation(MethodItem method) =>
 method.Name;