public void _saveStdUdl <__t>(__t nT, string nUrl) where __t : IStdUdl
        {
            if (!this._isUdl(nUrl))
            {
                return;
            }
            if (!this._haveUdl(nUrl))
            {
                return;
            }
            string        udlHeadstreamUrl_ = nUrl + @"*$descriptor.xml";
            UdlHeadstream udlHeadstream_    = nT._getUdlHeadstream();

            if (udlHeadstream_._isDirty())
            {
                this._writeHeadstream(udlHeadstream_, udlHeadstreamUrl_);
                udlHeadstream_._runSave();
            }

            string udlUrl_ = nUrl + @"*";

            udlUrl_ += udlHeadstream_._getFileName();
            if (nT._isDirty())
            {
                this._writeHeadstream(nT, udlUrl_);
            }
        }
        public void _newStdUdl <__t>(__t nT, string nUrl) where __t : IStdUdl
        {
            if (!this._isUdl(nUrl))
            {
                return;
            }
            if (this._haveUdl(nUrl))
            {
                return;
            }
            UrlParser urlParser_ = new UrlParser(nUrl);
            string    dirUrl_    = urlParser_._urlDir();

            Directory.CreateDirectory(dirUrl_);

            string        udlHeadstreamUrl_ = nUrl + @"*$descriptor.xml";
            UdlHeadstream udlHeadstream_    = nT._getUdlHeadstream();

            this._writeHeadstream(udlHeadstream_, udlHeadstreamUrl_);

            string udlUrl_ = nUrl + @"*";

            udlUrl_ += udlHeadstream_._getFileName();
            this._writeHeadstream(nT, udlUrl_);
        }
        public void _loadUdl <__t>(__t nT, string nUrl) where __t : IUdl
        {
            if (!this._isUdl(nUrl))
            {
                return;
            }
            if (!this._haveUdl(nUrl))
            {
                return;
            }
            string        udlHeadstreamUrl_ = nUrl + @"*$descriptor.xml";
            UdlHeadstream udlHeadstream_    = nT._getUdlHeadstream();

            this._readHeadstream(udlHeadstream_, udlHeadstreamUrl_);

            ICulture culture_        = this._currentCulture();
            string   cultureName_    = culture_._cultureName();
            string   stringTableUrl_ = nUrl + "*$";

            stringTableUrl_ += cultureName_;
            stringTableUrl_ += ".stringTable.xml";
            if (!this._haveUfl(stringTableUrl_))
            {
                stringTableUrl_ = nUrl + "*$stringTable.xml";
            }
            if (this._haveUfl(stringTableUrl_))
            {
                StringTable stringTable_ = nT._getStringTable();
                this._readHeadstream(stringTable_, stringTableUrl_);
            }
        }
        public __t _loadStdUdl <__t>(string nStdUdl, string nUrl) where __t : IStdUdl
        {
            if (!this._isUdl(nUrl))
            {
                return(default(__t));
            }
            if (!this._haveUdl(nUrl))
            {
                return(default(__t));
            }
            __t result_ = this._findInterface <__t>(nStdUdl);

            string        udlHeadstreamUrl_ = nUrl + @"*$descriptor.xml";
            UdlHeadstream udlHeadstream_    = result_._getUdlHeadstream();

            this._readHeadstream(udlHeadstream_, udlHeadstreamUrl_);

            ICulture culture_        = this._currentCulture();
            string   cultureName_    = culture_._cultureName();
            string   stringTableUrl_ = nUrl + "*$";

            stringTableUrl_ += cultureName_;
            stringTableUrl_ += ".stringTable.xml";
            if (!this._haveUfl(stringTableUrl_))
            {
                stringTableUrl_ = nUrl + "*$stringTable.xml";
            }
            if (this._haveUfl(stringTableUrl_))
            {
                StringTable stringTable_ = result_._getStringTable();
                this._readHeadstream(stringTable_, stringTableUrl_);
            }

            string udlUrl_ = nUrl + @"*";

            udlUrl_ += udlHeadstream_._getFileName();
            this._readHeadstream(result_, udlUrl_);

            return(result_);
        }
        bool _udlHaveFile <__t>(__t nT, string nUrl) where __t : IUdl
        {
            UdlHeadstream udlHeadstream_ = nT._getUdlHeadstream();
            string        fileName_      = udlHeadstream_._getFileName();
            UrlParser     urlParser_     = new UrlParser(nUrl);
            string        archiveDir_    = urlParser_._urlDir();

            string[] files_ = Directory.GetFiles(archiveDir_);
            if (files_.Length > 3)
            {
                return(true);
            }
            foreach (string i in files_)
            {
                int    pos_  = i.LastIndexOf("\\");
                string temp_ = i.Substring(pos_ + 1);
                if (temp_ != "$descriptor.xml" && temp_ != fileName_ && temp_ != "$stringTable.xml")
                {
                    return(true);
                }
            }
            return(false);
        }
        public void _deleteStdUdl <__t>(__t nT, string nUrl) where __t : IStdUdl
        {
            if (!this._isUdl(nUrl))
            {
                return;
            }
            if (!this._haveUdl(nUrl))
            {
                return;
            }
            if (this._udlHaveFile <IStdUdl>(nT, nUrl))
            {
                return;
            }
            string udlHeadstreamUrl_ = nUrl + @"*$descriptor.xml";

            this._delHeadstream(udlHeadstreamUrl_);

            UdlHeadstream udlHeadstream_ = nT._getUdlHeadstream();
            string        udlUrl_        = nUrl + @"*";

            udlUrl_ += udlHeadstream_._getFileName();
            this._delHeadstream(udlUrl_);
        }
示例#7
0
        public override void _runLoad(string nUrl)
        {
            base._runLoad(nUrl);

            string assemblyInfoUrl_ = nUrl + @"*$assembly.xml";

            mAssemblyInfo._runLoad(assemblyInfoUrl_);

            UdlHeadstream udlHeadstream_ = this._getUdlHeadstream();
            string        fileName_      = udlHeadstream_._getFileName();
            UrlParser     urlParser_     = new UrlParser(nUrl);
            string        assemblyPath_  = urlParser_._urlFile(fileName_);
            AssemblyName  assemblyName_  = AssemblyName.GetAssemblyName(assemblyPath_);
            AppDomain     appDomain_     = AppDomain.CurrentDomain;

            Assembly[] assemblies_ = appDomain_.GetAssemblies();
            foreach (Assembly i in assemblies_)
            {
                if (string.Compare(i.FullName, assemblyName_.FullName) == 0)
                {
                    mAssembly = i;
                    return;
                }
            }

            UidSingleton uidSingleton_ = __singleton <UidSingleton> ._instance();

            IEnumerable <Rid> rids_ = mAssemblyDescriptor._getRids();

            foreach (Rid i in rids_)
            {
                uidSingleton_._addRid(i);
            }

            IEnumerable <string> dependences_ = mAssemblyDescriptor._getDependences();

            foreach (string i in dependences_)
            {
                this._loadAssemblyUfl(i);
            }

            IEnumerable <Uid> uids_ = mAssemblyDescriptor._getUids();

            foreach (Uid i in uids_)
            {
                uidSingleton_._addUid(i);
                Uid    uid_    = i._getUid();
                string uidUrl_ = uid_._getOptimal();
                this._loadAssemblyUdl(uidUrl_);
            }

            IEnumerable <Uid> addins_ = mAssemblyDescriptor._getAddins();

            foreach (Uid i in addins_)
            {
                uidSingleton_._addUid(i);
                Uid    uid_    = i._getUid();
                string uidUrl_ = uid_._getOptimal();
                this._loadAddins(uidUrl_);
            }

            IEnumerable <string> plugins_ = mAssemblyDescriptor._getPlugins();

            foreach (string i in plugins_)
            {
                this._loadPlugins(i);
            }

            if (null == mAssembly)
            {
                mAssembly = Assembly.LoadFrom(assemblyPath_);
            }
        }