// This class doesn't implement the IServiceProvider. That is done // with worker classes ValueConverterContext or MarkupConverterContext. // The worker class implements IServiceProvider but uses the real // context for the implementation of the actual services. internal Type ServiceProvider_Resolve(string qName) { // As soon as we have the necessary setting on ObjectWriter, we need to start passing // the local assembly into the context; currently, this will only return publics. XamlType xamlType = ServiceProvider_ResolveXamlType(qName); if (xamlType == null || xamlType.UnderlyingType == null) { XamlTypeName name = XamlTypeName.Parse(qName, _serviceProviderContext); xamlType = GetXamlType(name, true, true); throw new XamlParseException(SR.Get(SRID.TypeNotFound, xamlType.GetQualifiedName())); } return(xamlType.UnderlyingType); }
public override void WriteStartObject(XamlType xamlType) { this.ThrowIfDisposed(); if (xamlType == null) { throw new ArgumentNullException("xamlType"); } this._deferringWriter.WriteStartObject(xamlType); if (!this._deferringWriter.Handled) { if (this._nextNodeMustBeEndMember) { string message = System.Xaml.SR.Get("ValueMustBeFollowedByEndMember"); throw this.WithLineInfo(new XamlObjectWriterException(message)); } if (xamlType.IsUnknown) { string str2 = System.Xaml.SR.Get("CantCreateUnknownType", new object[] { xamlType.GetQualifiedName() }); throw this.WithLineInfo(new XamlObjectWriterException(str2)); } if ((this._context.CurrentType != null) && (this._context.CurrentProperty == null)) { string str3 = System.Xaml.SR.Get("NoPropertyInCurrentFrame_SO", new object[] { xamlType.ToString(), this._context.CurrentType.ToString() }); throw this.WithLineInfo(new XamlObjectWriterException(str3)); } this._lastInstance = null; if (this._context.CurrentType != null) { this._context.PushScope(); } this._context.CurrentType = xamlType; if ((this._context.LiveDepth == 1) && (this._rootObjectInstance != null)) { XamlType type = this.GetXamlType(this._rootObjectInstance.GetType()); if (!type.CanAssignTo(this._context.CurrentType)) { throw new XamlParseException(System.Xaml.SR.Get("CantAssignRootInstance", new object[] { type.GetQualifiedName(), xamlType.GetQualifiedName() })); } this._context.CurrentInstance = this._rootObjectInstance; if (this._context.CurrentType.IsCollection || this._context.CurrentType.IsDictionary) { this._context.CurrentCollection = this._rootObjectInstance; } this.Logic_BeginInit(this._context); } } }
internal Type ServiceProvider_Resolve(string qName) { XamlType type = this.ServiceProvider_ResolveXamlType(qName); if ((type != null) && (type.UnderlyingType != null)) { return(type.UnderlyingType); } XamlTypeName typeName = XamlTypeName.Parse(qName, this._serviceProviderContext); type = base.GetXamlType(typeName, true, true); throw new XamlParseException(System.Xaml.SR.Get("TypeNotFound", new object[] { type.GetQualifiedName() })); }