コード例 #1
0
        public virtual IEnumerable <ApiExtensionMethod> ReadApiExtensions(XmlNode rootElement)
        {
            if (rootElement == null)
            {
                throw new DeserialisationException("Could not find API Extension element");
            }

            CheckVersion(rootElement);

            string fullTypeName = rootElement.Attributes["type"].Value;

            Type extendedType = GetTypeNamed(fullTypeName);

            if (extendedType == null)
            {
                throw new DeserialisationException(string.Format("Cannot find the type named {0}, have you loaded all referenced assemblies?", fullTypeName));
            }

            var extensionNodes = rootElement.SelectNodes("ApiExtension");

            if (extensionNodes == null)
            {
                return(new ApiExtensionMethod[0]);
            }

            List <ApiExtensionMethod> extensionMethods = new List <ApiExtensionMethod>();

            foreach (XmlNode extensionNode in extensionNodes)
            {
                ApiExtensionMethod extMethod = ReadApiExtension(extensionNode, extendedType);
                extensionMethods.Add(extMethod);
            }

            return(extensionMethods);
        }
コード例 #2
0
        private void SetPanelToMethod(MethodInfo info)
        {
            SaveCurrentFunctionInfo();

            Utility.SuspendPainting(panelContent);

            ClearPanel();

            // Try find Api Extension in the current project
            if (Project.Instance.TryGetApiExtensionFor(info, out currentExtentionMethod) == false)
            {
                currentExtentionMethod             = new ApiExtensionMethod(info);
                currentExtentionMethod.DefaultCode = Project.Instance.GetDefaultFunctionBodyFor(info);
            }

            functionScreen.CurrentFunction         = currentExtentionMethod.FunctionInfo;
            functionScreen.AllowOverride           = true;
            functionScreen.OverrideFunctionChecked = currentExtentionMethod.HasOverride;

            functionScreen.Populate();

            panelContent.Visible = true;

            Utility.ResumePainting(panelContent);

            formUserOptionDetails.Visible = false;
        }
        public void SetUp()
        {
            fileController = MockRepository.GenerateMock <IFileController>();
            fileController.Stub(f => f.DirectoryExists("Folder")).Return(true);
            fileController.Stub(f => f.CanCreateFilesIn("Folder")).Return(true);

            ExtensionMethod = new ApiExtensionMethod(typeof(ApiExtensionTest).GetMethod("Method1"));
        }
コード例 #4
0
        protected virtual ApiExtensionMethod ReadApiExtension(XmlNode extensionNode, Type extendedType)
        {
            NodeProcessor proc       = new NodeProcessor(extensionNode);
            var           methodName = proc.GetString("MethodName");
            MethodInfo    method     = extendedType.GetMethod(methodName);

            if (method == null)
            {
                throw new DeserialisationException(string.Format("Cannot find method named {0} on type {1}", methodName, extendedType.FullName));
            }

            string overrideText = proc.GetString("OverrideFunctionText");

            ApiExtensionMethod extMethod = new ApiExtensionMethod(method);

            extMethod.OverridingFunctionBody = overrideText;
            return(extMethod);
        }
 public void SetUp()
 {
     fileController  = MockRepository.GenerateMock <IFileController>();
     ExtensionMethod = new ApiExtensionMethod(typeof(ApiExtensionTest).GetMethod("Method1"));
     ExtensionMethod.OverridingFunctionBody = "return \"<>\";";             // Testing XML Escaping
 }
コード例 #6
0
 private void ClearPanel()
 {
     panelContent.Visible   = false;
     currentExtentionMethod = null;
 }