public MetadataLoader CreateLoader(ITypeLibraryElement tlElement, string filename, byte[] bytes) { Type loaderType = null; if (string.IsNullOrEmpty(tlElement.Loader)) { // By default, assume TypeLibraryLoader is intended. loaderType = typeof(TypeLibraryLoader); } else { var cfgSvc = services.RequireService<IConfigurationService>(); var diagSvc = services.RequireService<IDiagnosticsService>(); var ldrElement = cfgSvc.GetImageLoaders() .OfType<LoaderConfiguration>() .Where(le => le.Label == tlElement.Loader) .FirstOrDefault(); if (ldrElement != null && !string.IsNullOrEmpty(ldrElement.TypeName)) { loaderType = Type.GetType(ldrElement.TypeName, false); } if (loaderType == null) { diagSvc.Warn( "Metadata loader type {0} is unknown.", tlElement.Loader); return null; } } return (MetadataLoader)Activator.CreateInstance(loaderType, services, filename, bytes); }
public MetadataLoader CreateLoader(ITypeLibraryElement tlElement, string filename, byte[] bytes) { Type loaderType = null; if (string.IsNullOrEmpty(tlElement.Loader)) { // By default, assume TypeLibraryLoader is intended. loaderType = typeof(TypeLibraryLoader); } else { var cfgSvc = services.RequireService <IConfigurationService>(); var diagSvc = services.RequireService <IDiagnosticsService>(); var ldrElement = cfgSvc.GetImageLoaders() .OfType <LoaderConfiguration>() .Where(le => le.Label == tlElement.Loader) .FirstOrDefault(); if (ldrElement != null && !string.IsNullOrEmpty(ldrElement.TypeName)) { loaderType = Type.GetType(ldrElement.TypeName, false); } if (loaderType == null) { diagSvc.Warn(string.Format("Metadata loader type {0} is unknown.", tlElement.Loader)); return(null); } } return((MetadataLoader)Activator.CreateInstance(loaderType, services, filename, bytes)); }
public TypeLibrary LoadMetadataIntoLibrary(IPlatform platform, ITypeLibraryElement tlElement, TypeLibrary libDst) { var cfgSvc = services.RequireService <IConfigurationService>(); var fsSvc = services.RequireService <IFileSystemService>(); var diagSvc = services.RequireService <IDiagnosticsService>(); try { string libFileName = cfgSvc.GetInstallationRelativePath(tlElement.Name); if (!fsSvc.FileExists(libFileName)) { return(libDst); } byte[] bytes = fsSvc.ReadAllBytes(libFileName); MetadataLoader loader = CreateLoader(tlElement, libFileName, bytes); if (loader == null) { return(libDst); } var lib = loader.Load(platform, libDst); return(lib); } catch (Exception ex) { diagSvc.Error(ex, string.Format("Unable to load metadata file {0}.", tlElement.Name)); return(libDst); } }
private void Expect_TypeLibraryLoaderService_LoadLibrary(ITypeLibraryElement expected, TypeLibrary dstLib) { environmentMetadata = dstLib; tlSvc.Expect(t => t.LoadMetadataIntoLibrary( Arg <IPlatform> .Is.NotNull, Arg <ITypeLibraryElement> .Matches(a => a.Name == expected.Name), Arg <TypeLibrary> .Is.NotNull)) .Return(dstLib); }
private void Expect_TypeLibraryLoaderService_LoadLibrary(ITypeLibraryElement expected, TypeLibrary dstLib) { environmentMetadata = dstLib; tlSvc.Expect(t => t.LoadMetadataIntoLibrary( Arg<IPlatform>.Is.NotNull, Arg<ITypeLibraryElement>.Matches(a => a.Name == expected.Name), Arg<TypeLibrary>.Is.NotNull)) .Return(dstLib); }
private void Expect_TypeLibraryLoaderService_LoadLibrary(ITypeLibraryElement expected, TypeLibrary dstLib) { environmentMetadata = dstLib; tlSvc.Setup(t => t.LoadMetadataIntoLibrary( It.IsNotNull <IPlatform>(), It.Is <ITypeLibraryElement>(a => a.Name == expected.Name), It.IsNotNull <TypeLibrary>())) .Returns(dstLib) .Verifiable(); }
public TypeLibrary LoadMetadataIntoLibrary(IPlatform platform, ITypeLibraryElement tlElement, TypeLibrary libDst) { var cfgSvc = services.RequireService<IConfigurationService>(); var fsSvc = services.RequireService<IFileSystemService>(); var diagSvc = services.RequireService<IDiagnosticsService>(); try { string libFileName = cfgSvc.GetInstallationRelativePath(tlElement.Name); if (!fsSvc.FileExists(libFileName)) return libDst; byte[] bytes = fsSvc.ReadAllBytes(libFileName); MetadataLoader loader = CreateLoader(tlElement, libFileName, bytes); if (loader == null) return libDst; var lib = loader.Load(platform, libDst); return lib; } catch (Exception ex) { diagSvc.Error(ex, string.Format("Unable to load metadata file {0}.", tlElement.Name)); return libDst; } }
private TypeLibrary LoadTypelibrary(IConfigurationService cfgSvc, ITypeLibraryElement tl, LoaderElement ldr) { var type = Type.GetType(ldr.TypeName, true); var filename = cfgSvc.GetPath(tl.Name); var bytes = File.ReadAllBytes(filename); var loader = (MetadataLoader)Activator.CreateInstance(type, Services, filename, bytes); return loader.Load(this); }