Пример #1
0
        public IBundle InstallBundle(string location, Stream stream)
        {
            IBundle bundle = Framework.Bundles.GetBundle(location);

            if (bundle == null)
            {
                BundleData bundleData = Framework.ServiceContainer.GetFirstOrDefaultService <IBundleInstallerService>().CreateBundleData(location, stream);
                if (bundleData == null)
                {
                    Framework.EventManager.DispatchFrameworkEvent(this, new FrameworkEventArgs(FrameworkEventType.Error, new Exception($"Install bundle in '{location}' failed.")));
                    return(null);
                }
                Tuple <IBundle, IBundleMetadata> tuple = Framework.AddBundleData(bundleData);
                bundle = tuple.Item1;
                IBundleMetadata metadata = tuple.Item2;
                if (string.IsNullOrEmpty(bundleData.HostBundleSymbolicName))
                {
                    Interface1 host = metadata as Interface1;
                    AssertUtility.IsTrue(host != null);
                    List <IFragmentBundleMetadata> metadatas = BundleUtility.GetMetadatas <IFragmentBundleMetadata>(Framework.FrameworkAdaptor.State.Bundles);
                    BundleUtility.BindFragmentMetadatas(host, metadatas);
                }
                else
                {
                    IFragmentBundleMetadata metadata2 = metadata as IFragmentBundleMetadata;
                    AssertUtility.IsTrue(metadata2 != null);
                    BundleUtility.GetMetadatas <Interface1>(Framework.FrameworkAdaptor.State.Bundles);
                }
                Framework.ServiceContainer.GetFirstOrDefaultService <IBundlePersistent>().SaveInstallLocation(location);
            }
            return(bundle);
        }
Пример #2
0
        public List <Tuple <IFragmentBundleMetadataNode, List <IAssemblyMetadataNode> > > AttachAllFragments()
        {
            List <IFragmentBundleMetadata> metadatas = BundleUtility.GetMetadatas <IFragmentBundleMetadata>(base.ConstraintResolver.State.Bundles);

            BundleUtility.BindFragmentMetadatas((Interface1)base.Metadata, metadatas);
            List <Interface2> unResolverNodes = base.ConstraintResolver.State.Resolver.UnResolverNodes;

            BundleUtility.BuildFragments(this);
            List <Tuple <IFragmentBundleMetadataNode, List <IAssemblyMetadataNode> > > rt = new List <Tuple <IFragmentBundleMetadataNode, List <IAssemblyMetadataNode> > >(this.FragmentNodes.Count);

            this.FragmentNodes.ForEach(delegate(IFragmentBundleMetadataNode a) {
                base.ConstraintResolver.ResolvedAssemblyMetadataNodes.AddRange(a.SharedAssemblyNodes);
                base.ConstraintResolver.ResolvedAssemblyMetadataNodes.AddRange(a.PrivateAssemblyNodes);
            });
            this.FragmentNodes.ForEach(delegate(IFragmentBundleMetadataNode fragementNode) {
                rt.Add(TupleUtility.CreateTuple <IFragmentBundleMetadataNode, List <IAssemblyMetadataNode> >(fragementNode, new List <IAssemblyMetadataNode>(fragementNode.SharedAssemblyNodes)));
            });
            return(rt);
        }