示例#1
0
 internal P_LoadedPackageState(DefaultDescriptionPackageService service, DescriptionPackageLocator locator)
 {
     service.EnsureNotNull(nameof(service));
     locator.EnsureNotNull(nameof(locator));
     //
     _service    = service;
     _locator    = locator;
     _disposeCts = new CancellationTokenSource();
     _loader     = new AsyncOperator <IDescriptionPackage>(asyncFactory: P_LoadNewPackageInstanceAsync, ownsResult: true);
 }
示例#2
0
 internal P_LoadedPackageState(DefaultDescriptionPackageService service, IDescriptionPackage package, DescriptionPackageLocator locator, bool ownsPackage = false)
 {
     service.EnsureNotNull(nameof(service));
     package.EnsureNotNull(nameof(package));
     locator.EnsureNotNull(nameof(locator));
     //
     _service    = service;
     _locator    = locator;
     _disposeCts = null;
     _loader     = new AsyncOperator <IDescriptionPackage>(result: package, ownsResult: ownsPackage);
 }
示例#3
0
        // TODO: Put strings into the resources.
        //
        public virtual IDescriptionPackageLoadContext CreateLoadContext(DescriptionPackageLocator locator, IContext outerCtx = default)
        {
            locator.EnsureNotNull(nameof(locator));
            //
            var locationBaseUri = locator.PackageLocationBaseUri;

            if (locationBaseUri is null || !locationBaseUri.IsAbsoluteUri || locationBaseUri.IsFileUri().Value)
            {
                // По умолчанию полагается, что базовое расположение пакета — файл.
                //
                return(new DescriptionPackageFileLoadContext(locator: locator, fileUri: GetFileLoadSourceUri(locator: locator), skipLinkedMetadata: true, outerCtx: outerCtx));
            }