Ejemplo n.º 1
0
 public override object DeferredLoad(ServiceProviderContext serviceContext,
                                     XamlValueConverter <XamlDeferringLoader> deferringLoader,
                                     XamlReader deferredContent)
 {
     try
     {
         XamlDeferringLoader converter = GetConverterInstance(deferringLoader);
         if (converter == null)
         {
             throw new XamlObjectWriterException(SR.Get(SRID.DeferringLoaderInstanceNull, deferringLoader));
         }
         return(converter.Load(deferredContent, serviceContext));
     }
     catch (Exception e)
     {
         // Reset the reader in case our caller catches and retries
         IXamlIndexingReader indexingReader = deferredContent as IXamlIndexingReader;
         if (indexingReader != null && indexingReader.CurrentIndex >= 0)
         {
             indexingReader.CurrentIndex = -1;
         }
         if (CriticalExceptions.IsCriticalException(e) || e is XamlException)
         {
             throw;
         }
         throw CreateException(SR.Get(SRID.DeferredLoad), e);
     }
 }
Ejemplo n.º 2
0
        public override object DeferredLoad(ServiceProviderContext serviceContext, XamlValueConverter <XamlDeferringLoader> deferringLoader, XamlReader deferredContent)
        {
            object obj2;

            try
            {
                XamlDeferringLoader converterInstance = this.GetConverterInstance <XamlDeferringLoader>(deferringLoader);
                if (converterInstance == null)
                {
                    throw new XamlObjectWriterException(System.Xaml.SR.Get("DeferringLoaderInstanceNull", new object[] { deferringLoader }));
                }
                obj2 = converterInstance.Load(deferredContent, serviceContext);
            }
            catch (Exception exception)
            {
                IXamlIndexingReader reader = deferredContent as IXamlIndexingReader;
                if ((reader != null) && (reader.CurrentIndex >= 0))
                {
                    reader.CurrentIndex = -1;
                }
                if (!CriticalExceptions.IsCriticalException(exception) && !(exception is XamlException))
                {
                    throw this.CreateException(System.Xaml.SR.Get("DeferredLoad"), exception);
                }
                throw;
            }
            return(obj2);
        }
Ejemplo n.º 3
0
        public void WriteDeferred(XamlDeferringLoader loader, XamlNodeList nodeList, bool setValue)
        {
            nodeList.Writer.Close();
            var obj = loader.Load(nodeList.GetReader(), service_provider);
            var cms = CurrentMemberState;

            if (cms != null)
            {
                cms.Value = obj;
            }
            else
            {
                var state = object_states.Peek();
                state.Value          = obj;
                state.IsInstantiated = true;
            }
            if (setValue)
            {
                manager.Value();
            }
        }
Ejemplo n.º 4
0
 public override XamlReader DeferredSave(IServiceProvider serviceContext,
                                         XamlValueConverter <XamlDeferringLoader> deferringLoader,
                                         object value)
 {
     try
     {
         XamlDeferringLoader converter = GetConverterInstance(deferringLoader);
         if (converter == null)
         {
             throw new XamlObjectWriterException(SR.Get(SRID.DeferringLoaderInstanceNull, deferringLoader));
         }
         return(converter.Save(value, serviceContext));
     }
     catch (Exception e)
     {
         if (CriticalExceptions.IsCriticalException(e) || e is XamlException)
         {
             throw;
         }
         throw CreateException(SR.Get(SRID.DeferredSave), e);
     }
 }
Ejemplo n.º 5
0
        public override XamlReader DeferredSave(IServiceProvider serviceContext, XamlValueConverter <XamlDeferringLoader> deferringLoader, object value)
        {
            XamlReader reader;

            try
            {
                XamlDeferringLoader converterInstance = this.GetConverterInstance <XamlDeferringLoader>(deferringLoader);
                if (converterInstance == null)
                {
                    throw new XamlObjectWriterException(System.Xaml.SR.Get("DeferringLoaderInstanceNull", new object[] { deferringLoader }));
                }
                reader = converterInstance.Save(value, serviceContext);
            }
            catch (Exception exception)
            {
                if (!CriticalExceptions.IsCriticalException(exception) && !(exception is XamlException))
                {
                    throw this.CreateException(System.Xaml.SR.Get("DeferredSave"), exception);
                }
                throw;
            }
            return(reader);
        }
Ejemplo n.º 6
0
 public DeferredWriter(XamlSchemaContext context, XamlDeferringLoader loader)
 {
     List   = new XamlNodeList(context);
     Loader = loader;
 }