/// <summary>
        ///     Перегружает файл и формирует индекс на его основе
        /// </summary>
        protected override void RebuildIndex()
        {
            ReloadLibSource();
            XElement indexXml = XElement.Load(_fileSource.Open("/index"));

            foreach (XElement xcls in indexXml.Elements("class"))
            {
                string key = xcls.Attr("fullcode");
                if (!Cache.ContainsKey(key))
                {
                    var desc = new BSharpRuntimeClassDescriptor();
                    desc.Fullname     = key;
                    desc.ResourceName = xcls.Attr("uri");
                    var cls = new BSharpRuntimeClass(Container);
                    cls.Fullname      = key;
                    cls.Name          = xcls.Attr("code");
                    cls.Namespace     = xcls.Attr("namespace");
                    cls.PrototypeCode = xcls.Attr("prototype");
                    cls.RuntimeCode   = xcls.Attr("runtime");
                    cls.Loaded        = false;
                    desc.CachedClass  = cls;

                    Cache[key] = desc;
                }
            }
        }
        /// <summary>
        ///     Перегружает класс из файла на диске
        /// </summary>
        /// <param name="descriptor"></param>
        protected override void ReloadClass(BSharpRuntimeClassDescriptor descriptor)
        {
            XElement xml = XElement.Load(descriptor.ResourceName);
            var      cls = new BSharpRuntimeClass(Container)
            {
                Definition = xml
            };

            descriptor.CachedClass        = cls;
            descriptor.CachedClass.Loaded = true;
        }
예제 #3
0
	    private IBSharpRuntimeProvider GetPrecompileClsProvider() {
	        var provider = new BSharpGenericClassProvider();
	        foreach (var cls in _context.PreparedContext.Get(BSharpContextDataType.Working)) {
	            var rcls = new BSharpRuntimeClass {
	                Name = cls.Name,
	                Namespace = cls.Namespace,
	                PrototypeCode = cls.Prototype,
	                Loaded = true,
	                Definition = cls.Compiled
	            };
                provider.Set(rcls);
	        }
	        return provider;
	    }