public void InitializeComponent() { if ((this._contentLoaded == true)) { return; } this._contentLoaded = true; string resourceName = this.FindResource(); System.IO.Stream initializeXaml = typeof(状态机流程).Assembly.GetManifestResourceStream(resourceName); System.Xml.XmlReader xmlReader = null; System.Xaml.XamlReader reader = null; System.Xaml.XamlObjectWriter objectWriter = null; try { System.Xaml.XamlSchemaContext schemaContext = XamlStaticHelperNamespace._XamlStaticHelper.SchemaContext; xmlReader = System.Xml.XmlReader.Create(initializeXaml); System.Xaml.XamlXmlReaderSettings readerSettings = new System.Xaml.XamlXmlReaderSettings(); readerSettings.LocalAssembly = System.Reflection.Assembly.GetExecutingAssembly(); readerSettings.AllowProtectedMembersOnRoot = true; reader = new System.Xaml.XamlXmlReader(xmlReader, schemaContext, readerSettings); System.Xaml.XamlObjectWriterSettings writerSettings = new System.Xaml.XamlObjectWriterSettings(); writerSettings.RootObjectInstance = this; writerSettings.AccessLevel = System.Xaml.Permissions.XamlAccessLevel.PrivateAccessTo(typeof(状态机流程)); objectWriter = new System.Xaml.XamlObjectWriter(schemaContext, writerSettings); System.Xaml.XamlServices.Transform(reader, objectWriter); } finally { if ((xmlReader != null)) { ((System.IDisposable)(xmlReader)).Dispose(); } if ((reader != null)) { ((System.IDisposable)(reader)).Dispose(); } if ((objectWriter != null)) { ((System.IDisposable)(objectWriter)).Dispose(); } } }
private ResourceDictionary LoadDictionary(Assembly assembly, string assemblyName, string resourceName, bool isTraceEnabled) { ResourceDictionary dictionary = null; // Create the resource manager that will load the byte array ResourceManager rm = new ResourceManager(assemblyName + ".g", assembly); resourceName = resourceName + ".baml"; // Load the resource stream Stream stream = null; try { stream = rm.GetStream(resourceName, CultureInfo.CurrentUICulture); } // There is no ResourceManager.HasManifest in order to detect this case before an exception is thrown. // Likewise, there is no way to know if loading a resource will fail prior to loading it. // So, the exceptions must be caught. stream will continue to be null and handled accordingly later. #pragma warning disable 6502 catch (MissingManifestResourceException) { // No usable resources in the assembly } #if !DEBUG catch (InvalidOperationException) { // Object not stored correctly } #endif #pragma warning restore 6502 if (stream != null) { Baml2006ReaderSettings settings = new Baml2006ReaderSettings(); settings.OwnsStream = true; settings.LocalAssembly = assembly; Baml2006Reader bamlReader = new Baml2006Reader(stream, new Baml2006SchemaContext(settings.LocalAssembly), settings); System.Xaml.XamlObjectWriterSettings owSettings = XamlReader.CreateObjectWriterSettingsForBaml(); if (assembly != null) { owSettings.AccessLevel = XamlAccessLevel.AssemblyAccessTo(assembly); } System.Xaml.XamlObjectWriter writer = new System.Xaml.XamlObjectWriter(bamlReader.SchemaContext, owSettings); if (owSettings.AccessLevel != null) { XamlLoadPermission loadPermission = new XamlLoadPermission(owSettings.AccessLevel); loadPermission.Assert(); try { System.Xaml.XamlServices.Transform(bamlReader, writer); } finally { CodeAccessPermission.RevertAssert(); } } else { System.Xaml.XamlServices.Transform(bamlReader, writer); } dictionary = (ResourceDictionary)writer.Result; if (isTraceEnabled && (dictionary != null)) { EventTrace.EventProvider.TraceEvent(EventTrace.Event.WClientResourceBamlAssembly, EventTrace.Keyword.KeywordXamlBaml, EventTrace.Level.Verbose, assemblyName); } } return dictionary; }