protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { if (name == null) Values.Add (value); else base.OnPropertyDeserialized (name, value, resolver); }
protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { if (name == "IBEventType") IBEventType = (int) value; else base.OnPropertyDeserialized (name, value, resolver); }
protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { if (name != null) Properties [name] = value; else Values.Add (value); }
public ComparisonQueryGeneratingVisitor(object predicate, INativeClassFactory classSource , IReferenceResolver resolver) { _predicate = predicate; _classSource = classSource; _resolver = resolver; }
internal SODAQueryVisitor(IQuery query, object predicate, INativeClassFactory classSource , IReferenceResolver referenceResolver) { _query = query; _predicate = predicate; _classSource = classSource; _referenceResolver = referenceResolver; }
protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { if (name == "connectionID") ConnectionId = (int) value; else if (name == "connection") Connection = (IBObject) value; else base.OnPropertyDeserialized (name, value, resolver); }
public ReferenceConverter(IReferenceResolver referenceResolver) { if (referenceResolver == null) { throw new ArgumentNullException(nameof(referenceResolver)); } _referenceResolver = referenceResolver; }
public override void ResolveReferences(IReferenceResolver referenceResolver) { var leftFunction = (ReferenceFunction)_leftFunction; _leftFunction = referenceResolver.Resolve(leftFunction.GetName()); var rightFunction = (ReferenceFunction)_rightFunction; _rightFunction = referenceResolver.Resolve(rightFunction.GetName()); }
protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { if (name == "IBDocument.RootObjects") RootObjects = (NSMutableArray) value; else if (name != null) Properties [name] = value; else throw new InvalidOperationException ("XIB data element contains child with no key"); }
internal IReferenceResolver GetReferenceResolver() { if (_referenceResolver == null) { _referenceResolver = new DefaultReferenceResolver(); } return(_referenceResolver); }
public SelectiveValueEqualityReferenceResolver(IReferenceResolver defaultResolver, IEnumerable <Type> valueTypes) : base(defaultResolver) { if (valueTypes == null) { throw new ArgumentNullException(); } representatives = valueTypes.ToDictionary(t => t, t => new Dictionary <object, object>()); }
/// <summary> /// Asynchronously resolves the reference specified by its type and id within the latest revision. /// </summary> /// <typeparam name="TEntity">The type of entity the reference refers to.</typeparam> /// <param name="id">The id of the referenced entity.</param> /// <param name="cancellation">A <see cref="CancellationToken"/> used to cancel the asynchronous operation or <see cref="CancellationToken.None"/>.</param> /// <returns> /// A task representing the asynchronous operation. /// When evaluated, the tasks result contains the loaded entity or null if the reference could not be resolved. /// </returns> /// <exception cref="ArgumentNullException">Thrown if <paramref name="referenceResolver"/> is null.</exception> /// <exception cref="OperationCanceledException">Thrown if the operation was canceled.</exception> public static ValueTask <TEntity> ResolveAsync <TEntity>(this IReferenceResolver referenceResolver, string id, CancellationToken cancellation = default) where TEntity : class { if (referenceResolver == null) { throw new ArgumentNullException(nameof(referenceResolver)); } return(referenceResolver.ResolveAsync <TEntity>(id, revision: default, cancellation));
public override void WriteJson(JsonWriter writer, QueryExpression value, JsonSerializer serializer) { IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver; writer.WriteStartObject(); writer.WritePropertyName("$id"); serializer.Serialize(writer, new Guid(resolver.GetReference(null, value))); writer.WritePropertyName("$type"); serializer.Serialize(writer, nameof(QueryExpression)); writer.WritePropertyName("Consumer"); serializer.Serialize(writer, null); writer.WritePropertyName("Parameters"); if (value.Parameters == null) { serializer.Serialize(writer, null); } else if (value.Parameters.Count == 0) { writer.WriteStartArray(); writer.WriteEndArray(); } else { writer.WriteStartArray(); foreach (ParameterExpression parameter in value.Parameters) { serializer.Serialize(writer, parameter, typeof(ParameterExpression)); } writer.WriteEndArray(); } writer.WritePropertyName("Expressions"); if (value.Expressions == null) { serializer.Serialize(writer, null); } else if (value.Expressions.Count == 0) { writer.WriteStartArray(); writer.WriteEndArray(); } else { writer.WriteStartArray(); foreach (HermesModel model in value.Expressions) { serializer.Serialize(writer, model, model.GetType()); } writer.WriteEndArray(); } writer.WriteEndObject(); }
/// <summary> /// Initializes a new instance of the <see cref="MultipleSourceReferenceResolver"/> class. /// </summary> /// <param name="mainResolver">The main resolver, used to add references.</param> /// <param name="fallbackResolvers">The fallback resolvers.</param> public MultipleSourceReferenceResolver(IReferenceResolver mainResolver, params IReferenceResolver[] fallbackResolvers) { this.resolvers = new List <IReferenceResolver> { mainResolver }; foreach (var resolver in fallbackResolvers) { this.resolvers.Add(resolver); } }
public override PropertyReference ReadJson(JsonReader reader, Type objectType, PropertyReference existingValue, bool hasExistingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return(null); } IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver; PropertyReference target = new PropertyReference(null); JObject json = JObject.Load(reader); foreach (JProperty property in json.Properties()) { if (property.Name == "$id") { string id = (string)serializer.Deserialize(property.Value.CreateReader()); resolver.AddReference(null, id, target); } else if (property.Name == "Consumer") { target.Consumer = (HermesModel)serializer.Deserialize(property.Value.CreateReader()); } else if (property.Name == "Table") { JObject expression = JObject.Load(property.Value.CreateReader()); JProperty refProperty = expression.Properties().Where(p => p.Name == "$ref").FirstOrDefault(); if (refProperty != null) { target.Table = (TableExpression)serializer.Deserialize(property.Value.CreateReader()); } else { JProperty typeProperty = expression.Properties().Where(p => p.Name == "$type").FirstOrDefault(); if (typeProperty == null) { target.Table = null; } else { string typeName = (string)serializer.Deserialize(typeProperty.Value.CreateReader()); Type type = serializer.SerializationBinder.BindToType(null, typeName); target.Table = (TableExpression)serializer.Deserialize(property.Value.CreateReader(), type); } } } else if (property.Name == "Property") { target.Property = serializer.Deserialize <Property>(property.Value.CreateReader()); } } return(target); }
protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver) { if (name == "orderedObjects" && value is NSArray) { orderedObjects = ((NSArray)value).Values; } else { base.OnPropertyDeserialized(name, value, resolver); } }
protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver) { if (name == null) { Values.Add(value); } else { base.OnPropertyDeserialized(name, value, resolver); } }
protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver) { if (name == "IBEventType") { IBEventType = (int)value; } else { base.OnPropertyDeserialized(name, value, resolver); } }
protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver) { if (name != null) { Properties [name] = value; } else { Values.Add(value); } }
protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { if (name == "label") Label = (string) value; else if (name == "source") Source = (IBReference) value; else if (name == "destination") Destination = (IBReference) value; else base.OnPropertyDeserialized (name, value, resolver); }
protected SocketConnection(TcpClient client, IReferenceResolver referenceResolver) { Client = client; client.NoDelay = true; ReferenceResolver = referenceResolver; _maxQueueSize = 0x1000; Serializer.ReferenceResolver = referenceResolver; Serializer.TypeNameHandling = TypeNameHandling.Objects; Serializer.Context = new StreamingContext(StreamingContextStates.Remoting); #if DEBUG Serializer.Formatting = Formatting.Indented; #endif }
public static void RegisterGlobalAssemblyReferenceResolver(this AppDomain appDomain, IReferenceResolver resolver) { lock (m_Lock) { if (!m_DomainsAssemblyResolvers.TryGetValue(appDomain.Id, out AssemblyResolver assmResolver)) { assmResolver = new AssemblyResolver(appDomain); m_DomainsAssemblyResolvers.Add(appDomain.Id, assmResolver); } assmResolver.RegisterAssemblyReferenceResolver(resolver); } }
public override void WriteJson(JsonWriter writer, JoinExpression value, JsonSerializer serializer) { IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver; writer.WriteStartObject(); writer.WritePropertyName("$id"); serializer.Serialize(writer, new Guid(resolver.GetReference(null, value))); writer.WritePropertyName("$type"); serializer.Serialize(writer, nameof(JoinExpression)); writer.WritePropertyName("Consumer"); if (value.Consumer == null) { serializer.Serialize(writer, null); } else { serializer.Serialize(writer, value.Consumer, value.Consumer.GetType()); } writer.WritePropertyName("Name"); serializer.Serialize(writer, value.Name); writer.WritePropertyName("Alias"); serializer.Serialize(writer, value.Alias); writer.WritePropertyName("Entity"); serializer.Serialize(writer, value.Entity); writer.WritePropertyName("Hint"); serializer.Serialize(writer, value.Hint); writer.WritePropertyName("JoinType"); serializer.Serialize(writer, value.JoinType); writer.WritePropertyName("ON"); if (value.ON == null) { serializer.Serialize(writer, null); } else { serializer.Serialize(writer, value.ON, value.ON.GetType()); } writer.WriteEndObject(); }
protected SocketConnection(IReferenceResolver referenceResolver) { ReferenceResolver = referenceResolver; _sendQueue = new BlockingCollection <byte[]>(0x10000); Serializer = JsonSerializer.CreateDefault(new JsonSerializerSettings { ContractResolver = new SerializationContractResolver(), Context = new StreamingContext(StreamingContextStates.Remoting, this), ReferenceResolverProvider = () => referenceResolver, TypeNameHandling = TypeNameHandling.Objects | TypeNameHandling.Arrays, #if DEBUG Formatting = Formatting.Indented #endif }); }
protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver) { if (name == "majorKey") { MajorKey = (string)value; } else if (name == "minorKey") { MinorKey = (string)value; } else { base.OnPropertyDeserialized(name, value, resolver); } }
protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver) { if (name == "connectionID") { ConnectionId = (int)value; } else if (name == "connection") { Connection = (IBObject)value; } else { base.OnPropertyDeserialized(name, value, resolver); } }
protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { if (name == "objectID") ObjectId = (int) value; else if (name == "object") Object = value; else if (name == "objectName") ObjectName = (string) value; else if (name == "children") Children = value; else if (name == "parent") Parent = value; else base.OnPropertyDeserialized (name, value, resolver); }
protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver) { if (name == "IBProxiedObjectIdentifier") { IBProxiedObjectIdentifier = (string)value; } else if (name == "targetRuntimeIdentifier") { TargetRuntimeIdentifier = (string)value; } else { base.OnPropertyDeserialized(name, value, resolver); } }
protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver) { if (name == "IBDocument.RootObjects") { RootObjects = (NSMutableArray)value; } else if (name != null) { Properties [name] = value; } else { throw new InvalidOperationException("XIB data element contains child with no key"); } }
/// <inheritdoc /> public IAndJsonSerializerSettingsTestBuilder WithReferenceResolver(IReferenceResolver referenceResolver) { this.jsonSerializerSettings.ReferenceResolverProvider = () => referenceResolver; this.validations.Add((expected, actual) => { if (expected.ReferenceResolverProvider() != actual.ReferenceResolverProvider()) { this.ThrowNewJsonResultAssertionException( "the same reference resolver as the provided one", "in fact it was different"); } }); return(this); }
public override JoinExpression ReadJson(JsonReader reader, Type objectType, JoinExpression existingValue, bool hasExistingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return(null); } IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver; JoinExpression target = new JoinExpression(null, null); JObject json = JObject.Load(reader); foreach (JProperty property in json.Properties()) { if (property.Name == "$id") { string id = (string)serializer.Deserialize(property.Value.CreateReader()); resolver.AddReference(null, id, target); } else if (property.Name == "Consumer") { target.Consumer = (HermesModel)serializer.Deserialize(property.Value.CreateReader()); } else if (property.Name == "Alias") { target.Alias = (string)serializer.Deserialize(property.Value.CreateReader()); } else if (property.Name == "Hint") { target.Hint = (string)serializer.Deserialize(property.Value.CreateReader()); } else if (property.Name == "Entity") { target.Entity = serializer.Deserialize <Entity>(property.Value.CreateReader()); } else if (property.Name == "JoinType") { target.JoinType = (string)serializer.Deserialize(property.Value.CreateReader()); } else if (property.Name == "ON") { target.ON = serializer.Deserialize <BooleanFunction>(property.Value.CreateReader()); } } return(target); }
public override SelectStatement ReadJson(JsonReader reader, Type objectType, SelectStatement existingValue, bool hasExistingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return(null); } IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver; SelectStatement target = new SelectStatement(null, null); JObject json = JObject.Load(reader); foreach (JProperty property in json.Properties()) { if (property.Name == "$id") { string id = (string)serializer.Deserialize(property.Value.CreateReader()); resolver.AddReference(null, id, target); } else if (property.Name == "Consumer") { target.Consumer = (HermesModel)serializer.Deserialize(property.Value.CreateReader()); } else if (property.Name == "Alias") { target.Alias = (string)serializer.Deserialize(property.Value.CreateReader()); } else if (property.Name == "Hint") { target.Hint = (string)serializer.Deserialize(property.Value.CreateReader()); } else if (property.Name == "FROM") { DeserializeFROM(serializer, property, target); } else if (property.Name == "SELECT") { DeserializeSELECT(serializer, property, target); } else if (property.Name == "WHERE") { DeserializeWHERE(serializer, property, target); } } return(target); }
public EngineConfiguration() { //this.Activator = (IActivator)new DefaultActivator(); this.CompilerServiceFactory = new DefaultCompilerServiceFactory(); this.EncodedStringFactory = new HtmlEncodedStringFactory(); this.ReferenceResolver = new UseCurrentAssembliesReferenceResolver(); //this.CachingProvider = (ICachingProvider)new DefaultCachingProvider(); //this.TemplateManager = (ITemplateManager)new DelegateTemplateManager(); this.Namespaces = new HashSet <string>() { "System", "System.Collections.Generic", "System.Linq" }; this.Language = Language.CSharp; }
public override ParameterExpression ReadJson(JsonReader reader, Type objectType, ParameterExpression existingValue, bool hasExistingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return(null); } IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver; ParameterExpression target = new ParameterExpression(null); JObject json = JObject.Load(reader); foreach (JProperty property in json.Properties()) { if (property.Name == "$id") { string id = (string)serializer.Deserialize(property.Value.CreateReader()); resolver.AddReference(null, id, target); } else if (property.Name == "Consumer") { target.Consumer = (HermesModel)serializer.Deserialize(property.Value.CreateReader()); } else if (property.Name == "Name") { target.Name = (string)property.Value; } else if (property.Name == "Type") { target.Type = serializer.Deserialize <Entity>(property.Value.CreateReader()); } else if (property.Name == "Value") { if (property.Value.Type == JTokenType.Object) { target.Value = serializer.Deserialize <ReferenceProxy>(property.Value.CreateReader()); } else { target.Value = serializer.Deserialize(property.Value.CreateReader()); } } } return(target); }
public override void WriteJson(JsonWriter writer, Property value, JsonSerializer serializer) { IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver; writer.WriteStartObject(); writer.WritePropertyName("$id"); serializer.Serialize(writer, new Guid(resolver.GetReference(null, value))); writer.WritePropertyName("$type"); serializer.Serialize(writer, nameof(Property)); writer.WritePropertyName("identity"); serializer.Serialize(writer, value.Identity.ToString()); writer.WriteEndObject(); }
protected SocketConnection(TcpClient client, IReferenceResolver referenceResolver) { Client = client; client.NoDelay = true; ReferenceResolver = referenceResolver; _sendQueue = new BlockingCollection <byte[]>(0x1000); Serializer = JsonSerializer.CreateDefault(new JsonSerializerSettings { ContractResolver = new SerializationContractResolver(), ReferenceResolverProvider = () => referenceResolver, TypeNameHandling = TypeNameHandling.Objects, Context = new StreamingContext(StreamingContextStates.Remoting), #if DEBUG Formatting = Formatting.Indented #endif }); }
private Reference(string id, IReferenceResolver referenceResolver) { if (referenceResolver == null) { throw new ArgumentNullException(nameof(referenceResolver)); } Id = id; if (!string.IsNullOrEmpty(id)) { _aggregate = new Lazy <ValueTask <T> >(() => referenceResolver.ResolveAsync <T>(id, cancellation: default), isThreadSafe: true); } else { _aggregate = new Lazy <ValueTask <T> >(() => new ValueTask <T>(default(T)), isThreadSafe: true); } }
protected void DeserializeContents (IEnumerable<XElement> children, Dictionary<string, Func<IBObject>> constructors, IReferenceResolver resolver) { foreach (XElement child in children) { XAttribute keyAtt = child.Attribute ("key"); string keyStr = keyAtt == null? null : keyAtt.Value; if (child.Name == "bool" && keyStr == "EncodedWithXMLCoder") { EncodedWithXMLCoder = child.Value == "YES"; } else { object val = Deserialize (child, constructors, resolver); try { OnPropertyDeserialized (keyStr, val); } catch (Exception ex) { Console.WriteLine ("Error assigning {0}={1} to {2} in id {3}:\n{4}", keyStr, val, GetType (), Id, ex); } } } }
protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver) { if (EncodedWithXMLCoder) { if (name == "dict.sortedKeys") { sortedKeys = new Unref <NSArray> (value); } else if (name == "dict.values") { values = new Unref <NSArray> (value); } else { base.OnPropertyDeserialized(name, value, resolver); } } else { if (nonCoderKeys == null) { nonCoderKeys = new List <object> (); dict = new Dictionary <object, object> (); } if (name.StartsWith("NS.key.")) { int idx = Int32.Parse(name.Substring("NS.key.".Length)); while (nonCoderKeys.Count <= idx) { nonCoderKeys.Add(null); } nonCoderKeys[idx] = value; } else if (name.StartsWith("NS.object.")) { int idx = Int32.Parse(name.Substring("NS.object.".Length)); dict[nonCoderKeys[idx]] = value; } else { base.OnPropertyDeserialized(name, value, resolver); } } }
protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver) { if (name == "label") { Label = (string)value; } else if (name == "source") { Source = (IBReference)value; } else if (name == "destination") { Destination = (IBReference)value; } else { base.OnPropertyDeserialized(name, value, resolver); } }
public static object Deserialize (XElement element, Dictionary<string, Func<IBObject>> constructors, IReferenceResolver resolver) { var idAtt = element.Attribute ("id"); object val = DeserializeInner (element, constructors, resolver); var ib = val as IBObject; if (idAtt != null) { int id = Int32.Parse (idAtt.Value); if (ib != null) { ib.Id = id; resolver.Add (ib); } else { resolver.Add (id, val); } } if (ib != null) ib.DeserializeContents (element.Elements (), constructors, resolver); return val; }
protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { if (name == "majorKey") MajorKey = (string) value; else if (name == "minorKey") MinorKey = (string) value; else base.OnPropertyDeserialized (name, value, resolver); }
/// <summary> /// Create a new readonly view (and copy) of the given configuration. /// </summary> /// <param name="config">the configuration to copy.</param> public ReadOnlyTemplateServiceConfiguration(ITemplateServiceConfiguration config) { if (config == null) { throw new ArgumentNullException("config"); } _allowMissingPropertiesOnDynamic = config.AllowMissingPropertiesOnDynamic; _activator = config.Activator; if (_activator == null) { throw new ArgumentNullException("config", "the configured Activator cannot be null!"); } _baseTemplateType = config.BaseTemplateType; // Check if the baseTemplateType is valid. if (_baseTemplateType != null && (!typeof(ITemplate).IsAssignableFrom(_baseTemplateType) || typeof(ITemplate) == _baseTemplateType)) { throw new ArgumentOutOfRangeException("config", "the configured BaseTemplateType must implement ITemplate!"); } _cachingProvider = config.CachingProvider; if (_cachingProvider == null) { throw new ArgumentNullException("config", "the configured CachingProvider cannot be null!"); } #if !RAZOR4 #pragma warning disable 0618 // Backwards Compat. _codeInspectors = config.CodeInspectors; if (_codeInspectors == null) { throw new ArgumentNullException("config", "the configured CodeInspectos cannot be null!"); } _codeInspectors = new List<ICodeInspector>(_codeInspectors); #pragma warning restore 0618 // Backwards Compat. #endif _compilerServiceFactory = config.CompilerServiceFactory; if (_compilerServiceFactory == null) { throw new ArgumentNullException("config", "the configured CompilerServiceFactory cannot be null!"); } _debug = config.Debug; _disableTempFileLocking = config.DisableTempFileLocking; _encodedStringFactory = config.EncodedStringFactory; if (_encodedStringFactory == null) { throw new ArgumentNullException("config", "the configured EncodedStringFactory cannot be null!"); } _language = config.Language; _namespaces = config.Namespaces; if (_namespaces == null) { throw new ArgumentNullException("config", "the configured Namespaces cannot be null!"); } _namespaces = new HashSet<string>(_namespaces); _referenceResolver = config.ReferenceResolver; if (_referenceResolver == null) { throw new ArgumentNullException("config", "the configured ReferenceResolver cannot be null!"); } #pragma warning disable 0618 // Backwards Compat. _resolver = config.Resolver; _templateManager = config.TemplateManager; if (_templateManager == null) { if (_resolver != null) { _templateManager = new Xml.WrapperTemplateManager(_resolver); } else { throw new ArgumentNullException("config", "the configured TemplateManager and Resolver cannot be null!"); } } #pragma warning restore 0618 // Backwards Compat. }
protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { if (name == "orderedObjects" && value is NSArray) orderedObjects = ((NSArray)value).Values; else base.OnPropertyDeserialized (name, value, resolver); }
public virtual void OptimizeQuery(IExpression expr, IQuery query, object predicate , INativeClassFactory classSource, IReferenceResolver referenceResolver) { expr.Accept(new SODAQueryBuilder.SODAQueryVisitor(query, predicate, classSource, referenceResolver)); }
protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { Values[name] = value; }
protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { if (EncodedWithXMLCoder) { if (name == "dict.sortedKeys") { sortedKeys = new Unref<NSArray> (value); } else if (name == "dict.values") { values = new Unref<NSArray> (value); } else { base.OnPropertyDeserialized (name, value, resolver); } } else { if (nonCoderKeys == null) { nonCoderKeys = new List<object> (); dict = new Dictionary<object, object> (); } if (name.StartsWith ("NS.key.")) { int idx = Int32.Parse (name.Substring ("NS.key.".Length)); while (nonCoderKeys.Count <= idx) nonCoderKeys.Add (null); nonCoderKeys[idx] = value; } else if (name.StartsWith ("NS.object.")) { int idx = Int32.Parse (name.Substring ("NS.object.".Length)); dict[nonCoderKeys[idx]] = value; } else { base.OnPropertyDeserialized (name, value, resolver); } } }
static object DeserializeInner (XElement element, Dictionary<string, Func<IBObject>> constructors, IReferenceResolver resolver) { switch (element.Name.ToString ()) { case "int": return Int32.Parse (element.Value); case "integer": return Int32.Parse (element.Attribute ("value").Value); case "nil": return null; case "string": XAttribute typeAtt = element.Attribute ("type"); if (typeAtt != null) { switch (typeAtt.Value) { case "base64-UTF8": //FIXME: figure out the encoding they're using. why do we have to remove the last char to make it decode? string s = element.Value.Replace ("\n", "").Replace ("\r", ""); int last = (s.Length / 4 ) * 4; return Encoding.UTF8.GetString (Convert.FromBase64String (s.Substring (0, last))); default: throw new Exception (String.Format ("Unknown string encoding type {0}", typeAtt.Value)); } } return element.Value; case "characters": return element.Value; case "bool": return element.Value == "YES"; case "boolean": return element.Attribute ("value").Value == "YES"; case "double": return Double.Parse (element.Value); case "float": return float.Parse (element.Value); case "real": return float.Parse (element.Attribute ("value").Value); case "bytes": //FIXME: figure out the encoding they're using. it's not straight base 64 return new AppleEvilByteArrayEncoding (element.Value); case "reference": var refAtt = element.Attribute ("ref"); IBReference xibRef; if (refAtt != null) { xibRef = new IBReference (Int32.Parse (refAtt.Value)); resolver.Add (xibRef); } else { //FIXME: handle null references more robustly xibRef = new IBReference (Int32.MinValue); } return xibRef; case "object": string className = element.Attribute ("class").Value; Func<IBObject> constructor; IBObject obj; if (constructors.TryGetValue (className, out constructor)) obj = constructor (); else obj = new UnknownIBObject (className); return obj; default: throw new Exception (String.Format ("Cannot handle primitive type {0}", element.Name)); } }
protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { switch (name) { case "className": ClassName = (string) value; break; case "superclassName": SuperclassName = (string) value; break; case "actions": Actions = (NSMutableDictionary) value; break; case "outlets": Outlets = (NSMutableDictionary) value; break; case "sourceIdentifier": SourceIdentifier = new Unref<IBClassDescriptionSource> (value); break; case "toOneOutletInfosByName": ToOneOutletInfosByName = (NSMutableDictionary) value; break; case "actionInfosByName": ActionInfosByName = (NSMutableDictionary) value; break; default: base.OnPropertyDeserialized (name, value, resolver); break; } }
protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { if (name == "IBProxiedObjectIdentifier") IBProxiedObjectIdentifier = (string) value; else if (name == "targetRuntimeIdentifier") TargetRuntimeIdentifier = (string) value; else base.OnPropertyDeserialized (name, value, resolver); }
protected virtual void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver) { throw new InvalidOperationException (String.Format ("Unexpected property '{0}' of type '{1}' in type '{2}'", name, value.GetType (), GetType ())); }