internal Baml2006ReaderInternal(
     Stream stream,
     Baml2006SchemaContext baml2006SchemaContext,
     Baml2006ReaderSettings baml2006ReaderSettings,
     object root)
     : base(stream, baml2006SchemaContext, baml2006ReaderSettings, root)
 {
 }
Exemple #2
0
        public Baml2006Reader(Stream stream)
        { 
            if (stream == null) 
            {
                throw new ArgumentNullException("stream"); 
            }

            var schemaContext = new Baml2006SchemaContext(null);
            var settings = new Baml2006ReaderSettings(); 

            Initialize(stream, schemaContext, settings); 
        } 
            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;
            }
Exemple #4
0
 // Token: 0x0600103E RID: 4158 RVA: 0x0004137C File Offset: 0x0003F57C
 internal override object CreateTypeConverterMarkupExtension(XamlMember property, TypeConverter converter, object propertyValue, Baml2006ReaderSettings settings)
 {
     if (FrameworkAppContextSwitches.AppendLocalAssemblyVersionForSourceUri && property.DeclaringType.UnderlyingType == typeof(ResourceDictionary) && property.Name.Equals("Source"))
     {
         return(new SourceUriTypeConverterMarkupExtension(converter, propertyValue, settings.LocalAssembly));
     }
     return(base.CreateTypeConverterMarkupExtension(property, converter, propertyValue, settings));
 }
Exemple #5
0
 // Token: 0x0600103B RID: 4155 RVA: 0x0004135C File Offset: 0x0003F55C
 internal Baml2006ReaderInternal(Stream stream, Baml2006SchemaContext schemaContext, Baml2006ReaderSettings settings) : base(stream, schemaContext, settings)
 {
 }
Exemple #6
0
 // Token: 0x0600106D RID: 4205 RVA: 0x0004171B File Offset: 0x0003F91B
 public Baml2006ReaderSettings(Baml2006ReaderSettings settings) : base(settings)
 {
     this.OwnsStream     = settings.OwnsStream;
     this.IsBamlFragment = settings.IsBamlFragment;
 }
 public Baml2006ReaderSettings(Baml2006ReaderSettings settings) : base(settings)
 {
     OwnsStream = settings.OwnsStream;
     IsBamlFragment = settings.IsBamlFragment;
 }
Exemple #8
0
        internal Baml2006Reader(Stream stream, 
            Baml2006SchemaContext schemaContext, 
            Baml2006ReaderSettings settings)
        { 
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            } 

            if (schemaContext == null) 
            { 
                throw new ArgumentNullException("schemaContext");
            } 

            Initialize(stream, schemaContext, settings ?? new Baml2006ReaderSettings());
        }
Exemple #9
0
        public Baml2006Reader(Stream stream, XamlReaderSettings xamlReaderSettings) 
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream"); 
            }
            if (xamlReaderSettings == null) 
            { 
                throw new ArgumentNullException("xamlReaderSettings");
            } 
            Baml2006SchemaContext schemaContext;
            if (xamlReaderSettings.ValuesMustBeString)
            {
                schemaContext = new Baml2006SchemaContext(xamlReaderSettings.LocalAssembly, System.Windows.Markup.XamlReader.XamlV3SharedSchemaContext); 
            }
            else 
            { 
                schemaContext = new Baml2006SchemaContext(xamlReaderSettings.LocalAssembly);
            } 
            var settings = new Baml2006ReaderSettings(xamlReaderSettings);

            Initialize(stream, schemaContext, settings);
        } 
Exemple #10
0
        private void Initialize(Stream stream, 
            Baml2006SchemaContext schemaContext, 
            Baml2006ReaderSettings settings)
        { 
            schemaContext.Settings = settings;
            _settings = settings;
            _context = new Baml2006ReaderContext(schemaContext);
            _xamlMainNodeQueue = new XamlNodeQueue(schemaContext); 
            _xamlNodesReader = _xamlMainNodeQueue.Reader;
            _xamlNodesWriter = _xamlMainNodeQueue.Writer; 
            _lookingForAKeyOnAMarkupExtensionInADictionaryDepth = -1; 

            _isBinaryProvider = !settings.ValuesMustBeString; 

            // Since the reader owns the stream and is responsible for its lifetime
            // it can safely hand out shared streams.
            if (_settings.OwnsStream) 
            {
                stream = new SharedStream(stream); 
            } 

            _binaryReader = new BamlBinaryReader(stream); 

            _context.TemplateStartDepth = -1;

            if (!_settings.IsBamlFragment) 
            {
                Process_Header(); 
            } 
        }
Exemple #11
0
 internal Baml2006Reader(
     Stream stream, 
     Baml2006SchemaContext baml2006SchemaContext, 
     Baml2006ReaderSettings baml2006ReaderSettings,
     object root) 
     : this(stream, baml2006SchemaContext, baml2006ReaderSettings)
 {
     _root = root;
 } 
Exemple #12
0
 internal static Baml2006ReaderSettings CreateBamlReaderSettings() 
 {
     Baml2006ReaderSettings brSettings = new Baml2006ReaderSettings(); 
     brSettings.IgnoreUidsOnPropertyElements = true; 
     return brSettings;
 } 
        private void SetDeferrableContent(DeferrableContent deferrableContent) 
        {
            Debug.Assert(deferrableContent.Stream != null); 
            Debug.Assert(deferrableContent.SchemaContext != null); 
            Debug.Assert(deferrableContent.ObjectWriterFactory != null);
            Debug.Assert(deferrableContent.ServiceProvider != null); 
            Debug.Assert(deferrableContent.RootObject != null);

            Baml2006ReaderSettings settings = new Baml2006ReaderSettings(deferrableContent.SchemaContext.Settings);
            settings.IsBamlFragment = true; 
            settings.OwnsStream = true;
            settings.BaseUri = null;    // Base URI can only be set on the root object, not on deferred content. 
 
            Baml2006Reader reader = new Baml2006Reader(deferrableContent.Stream,
                deferrableContent.SchemaContext, settings); 
            _objectWriterFactory = deferrableContent.ObjectWriterFactory;
            _objectWriterSettings = deferrableContent.ObjectWriterParentSettings;
            _deferredLocationList = new List<KeyRecord>();
            _rootElement = deferrableContent.RootObject; 

            IList<KeyRecord> keys = reader.ReadKeys(); 
 
            // If we already have the Source set then we can ignore
            // this deferable content section 
            if (_source == null)
            {
                if (_reader == null)
                { 
                    _reader = reader;
                    _xamlLoadPermission = deferrableContent.LoadPermission; 
                    SetKeys(keys, deferrableContent.ServiceProvider); 
                }
                else 
                {
                    throw new InvalidOperationException(SR.Get(SRID.ResourceDictionaryDuplicateDeferredContent));
                }
            } 
            else if (keys.Count > 0)
            { 
                throw new InvalidOperationException(SR.Get(SRID.ResourceDictionaryDeferredContentFailure)); 
            }
        }