Exemplo n.º 1
0
        private void RegisterProperty(ElementAttributeMetadata metadata, String value)
        {
            var property = metadata.XName;

            if (_smartProperties.ContainsKey(property))
            {
                throw new ElementException(ElementErrorCodes.PropertyAlreadyRegistered, property);
            }

            var propertyInfo = RuntimeType.GetProperty(metadata.MemberInfo.Name);

            if (value.StartsWith("{") && value.EndsWith("}"))
            {
                var cmd         = value.Trim("{} ".ToCharArray());
                var pair        = cmd.Split(" ".ToCharArray(), 2);
                var keyword     = pair[0];
                var instruccion = pair.GetLength(0) > 1 ? pair[1] : String.Empty;

                var extension = MetadataDirectory.GetCustomMarkupExtensions(keyword);
                if (extension == null)
                {
                    throw new ElementException(ElementErrorCodes.CustomMarkupExtensionNotFound, keyword);
                }

                var @object = extension.ProvideValue(this, metadata, keyword, instruccion);
                _smartProperties.Add(property, new SmartProperty(@object));
                return;
            }

            _smartProperties.Add(property, new SmartProperty(Cast(value, propertyInfo.PropertyType)));
        }
Exemplo n.º 2
0
        public static FrameworkElement Factory(XElement xElement, FrameworkApplication application, FrameworkElement parent)
        {
            var metadata    = MetadataDirectory.GetMetadata(xElement);
            var constructor = MetadataDirectory.GetRuntimeType(xElement).GetConstructor(Type.EmptyTypes);

            var item = constructor.Invoke(null) as FrameworkElement;

            if (item == null)
            {
                throw new ElementException(ElementErrorCodes.UnableToCreateFrameworkElement, MetadataDirectory.GetRuntimeType(xElement).Name);
            }

            item._metadata   = metadata;
            item.Application = application;
            item.RegisterProperty(xElement.Name.LocalName, item);
            item.Parent = parent;

            var staticKey = xElement.Attribute(MetadataDirectory.StaticsNamespace + "Key");

            if (staticKey != null)
            {
                item.StaticKey = staticKey.Value;
            }
            else
            {
                var att = String.Format("{0}_{1:D4}_{2:D3}", xElement.Name.LocalName, xElement.GetHashCode(), RandomUtils.RandomNumber(1, 999));
                xElement.SetAttributeValue(MetadataDirectory.StaticsNamespace + "Key", att);
                item.StaticKey = att;
            }
            application.RegisterFrameworkElement(item);

            item.GenericType = MetadataDirectory.GetGenericType(xElement);
            item._xElement   = xElement;
            item._xElement.AddAnnotation(new AnnotationWrapper {
                Element = item
            });

            // Creo los hijos
            if (item._metadata.IsContainer)
            {
                foreach (var xChild in xElement.Elements())
                {
                    item._items.Add(Factory(xChild, item.Application, item));
                }
            }
            //foreach (var se in extensions) se.AfterCreate(item);
            return(item);
        }
Exemplo n.º 3
0
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        public static void LoadAndRun(String[] args)
        {
            var appFile = String.Format(@"{0}\{1}", Process.GetApplicationFolder(), ((args.Length == 0) ? "AutoRun.xml" : args[0]));

            STrace.Debug(typeof(ApplicationLoader).FullName, "Creating Backend Category into PerformanceCounterHelper");
            PerformanceCounterHelper.Create(new BackendCategory());
            //STrace.Debug(typeof(ApplicationLoader).FullName, "Launching Debugger...");
            //Debugger.LaunchDebugger(1);

            STrace.Debug(typeof(ApplicationLoader).FullName, "Initiating AppDomain...");
            Process.InitAppDomain();

            try
            {
                STrace.Debug(typeof(ApplicationLoader).FullName, "Loading MetadataDirectory...");
                MetadataDirectory.Load();
            }
            catch (Exception e)
            {
                STrace.Exception(typeof(ApplicationLoader).FullName, e, "No se pudieron cargar los assemblies, borre y vuelva a copiar todos los archivos .exe .dll y .pdb");
                Thread.Sleep(2000);
                return;
            }

            if (!IOUtils.FileExists(appFile))
            {
                STrace.Error(typeof(ApplicationLoader).FullName, String.Format("No existe el archivo '{0}'", appFile));
            }

            var mode = FrameworkApplication.GetRunMode(appFile);

            switch (mode)
            {
            case RunMode.WinService: ServiceMain(appFile, args[1]); break;

            case RunMode.WinForm: WindowsMain(appFile); break;

            case RunMode.Hidden: HiddenInstallMain(appFile); break;

            case RunMode.Console: ConsoleMain(appFile); break;

            default: STrace.Error(typeof(ApplicationLoader).FullName, "No se pudo determinar el modo requerido de ejecucion para la aplicacion."); break;
            }
            Environment.Exit(0);
        }