Beispiel #1
0
 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();
         }
     }
 }
Beispiel #2
0
            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;
            }