public override Json.Expression ToJson(SerializationDomain domain) { if (domain.IsV08) { throw new NotSupportedException("Record types can only be serialized in Bonsai v0.9 or later."); } var count = _members.Length; var members = new Json.Expression[count]; for (var i = 0; i < count; i++) { members[i] = _members[i].ToJson(domain); } if (!_hasValueEqualitySemantics) { return(Json.Expression.Array( Discriminators.Type.RecordDiscriminator, Json.Expression.Array(members), Json.Expression.Boolean(false) )); } else { return(Json.Expression.Array( Discriminators.Type.RecordDiscriminator, Json.Expression.Array(members) )); } }
public override Json.Expression ToJson(SerializationDomain domain) { return(Json.Expression.Array( Discriminators.Type.SimpleDiscriminator, Json.Expression.String(_typeName), _assembly.ToJsonNumber() )); }
public override Json.Expression ToJson(SerializationDomain domain) { var type = Type.ToJson(); return(Json.Expression.Array( Json.Expression.String(Name), type )); }
public SerializationState(Version version) { _domain = new SerializationDomain(version); _params = new Stack <Dictionary <ParameterExpression, int> >(); _globals = new Dictionary <ParameterExpression, int>(); _globalsDef = new List <ParameterExpression>(); _labelTargets = new Dictionary <LabelTarget, int>(); _labelTargetsDef = new List <LabelTarget>(); }
public override Json.Expression ToJson(SerializationDomain domain) { var declType = DeclaringType.ToJson(); if (!domain.IsV08) { var indexParameterTypes = _property.IndexParameterTypes; var indexParameterCount = indexParameterTypes.Count; var indexParameterList = new Json.Expression[indexParameterCount]; for (var i = 0; i < indexParameterCount; i++) { indexParameterList[i] = domain.AddType(indexParameterTypes[i]).ToJson(); } var indexParameters = Json.Expression.Array(indexParameterList); if (_property.PropertyType != null) { var propType = domain.AddType(_property.PropertyType).ToJson(); return(Json.Expression.Array( Discriminators.MemberInfo.PropertyDiscriminator, declType, Json.Expression.String(_property.Name), indexParameters, propType )); } else { return(Json.Expression.Array( Discriminators.MemberInfo.PropertyDiscriminator, declType, Json.Expression.String(_property.Name), indexParameters )); } } else { return(Json.Expression.Array( Discriminators.MemberInfo.PropertyDiscriminator, declType, Json.Expression.String(_property.Name) )); } }
public override Json.Expression ToJson(SerializationDomain domain) { var n = _members.Length; var args = new Json.Expression[n + 1]; args[0] = Discriminators.Type.AnonymousDiscriminator; for (var i = 0; i < n; i++) { args[i + 1] = _members[i].ToJson(domain); } return(Json.Expression.Array( args )); }
public override Json.Expression ToJson(SerializationDomain domain) { var count = _genericArguments.Length; var arguments = new Json.Expression[count]; for (var i = 0; i < count; i++) { arguments[i] = _genericArguments[i].ToJson(); } return(Json.Expression.Array( Discriminators.MemberInfo.ClosedGenericMethodDiscriminator, _genericMethodDefinition, Json.Expression.Array(arguments) )); }
public override Json.Expression ToJson(SerializationDomain domain) { var count = _parameters.Length; var parameters = new Json.Expression[count]; for (var i = 0; i < count; i++) { parameters[i] = _parameters[i].ToJson(); } return(Json.Expression.Array( Discriminators.MemberInfo.ConstructorDiscriminator, DeclaringType.ToJson(), Json.Expression.Array(parameters) )); }
public override Json.Expression ToJson(SerializationDomain domain) { var count = _genericTypeArguments.Length; var genericTypeArguments = new Json.Expression[count]; for (var i = 0; i < count; i++) { genericTypeArguments[i] = _genericTypeArguments[i].ToJson(); } return(Json.Expression.Array( Discriminators.Type.GenericDiscriminator, _genericTypeDefinition.ToJson(), Json.Expression.Array(genericTypeArguments) )); }
public override Json.Expression ToJson(SerializationDomain domain) { if (_rank == null) { return(Json.Expression.Array( Discriminators.Type.ArrayDiscriminator, _elementType.ToJson() )); } else { return(Json.Expression.Array( Discriminators.Type.ArrayDiscriminator, _elementType.ToJson(), _rank.Value.ToJsonNumber() )); } }
public override Json.Expression ToJson(SerializationDomain domain) { var count = Parameters.Length; var parameters = new Json.Expression[count]; for (var i = 0; i < count; i++) { parameters[i] = Parameters[i].ToJson(); } return(Json.Expression.Array( Discriminators.MemberInfo.SimpleMethodDiscriminator, DeclaringType.ToJson(), Json.Expression.String(((SimpleMethodInfoSlim)Method).Name), Json.Expression.Array(parameters), ReturnType.ToJson() )); }
public override Json.Expression ToJson(SerializationDomain domain) { var type = Type.ToJson(); if (!IsKey) { return(Json.Expression.Array( Json.Expression.String(Name), type, Json.Expression.Boolean(false) )); } else { return(Json.Expression.Array( Json.Expression.String(Name), type )); } }
public override Json.Expression ToJson(SerializationDomain domain) { if (!domain.IsV08 && _field.FieldType != null) { return(Json.Expression.Array( Discriminators.MemberInfo.FieldDiscriminator, DeclaringType.ToJson(), Json.Expression.String(_field.Name), domain.AddType(_field.FieldType).ToJson() )); } else { return(Json.Expression.Array( Discriminators.MemberInfo.FieldDiscriminator, DeclaringType.ToJson(), Json.Expression.String(_field.Name) )); } }
public override Json.Expression ToJson(SerializationDomain domain) { var count = Parameters.Length; var parameters = new Json.Expression[count]; for (var i = 0; i < count; i++) { parameters[i] = Parameters[i].ToJson(); } var genericMethod = (GenericDefinitionMethodInfoSlim)Method; return(Json.Expression.Array( Discriminators.MemberInfo.OpenGenericMethodDiscriminator, DeclaringType.ToJson(), Json.Expression.String(genericMethod.Name), genericMethod.GenericParameterTypes.Count.ToJsonNumber(), Json.Expression.Array(parameters), ReturnType.ToJson() )); }
public abstract Json.Expression ToJson(SerializationDomain domain);
public override Json.Expression ToJson(SerializationDomain domain) { throw new NotSupportedException("Generic parameter types should not be serialized."); }