private void ValidatePayloadMembers(ObjectMember payload) { if (!(payload.Value is ObjectExpression)) { this.AddSyntaxError("Payload must be an object expression.", payload.Context); } }
private SetterMethod Read(IDataReader reader, ObjectMember field, object value, Dictionary <string, object> values) { string name = field.Name; if (!reader.IsEmptyElement) { var serializerAttribute = field.Member.GetCustomAttribute <CustomFormatterAttribute>(false); var serializer = serializerAttribute?.Formatter ?? FormatterFromReader(reader, out var type); int cycleId = reader.ReadId(); reader.ReadStartNode(name); object cycleValue = values[name] = serializer.Read(reader, value); if (CycleUtility.ValidCycleType(serializer.Type)) { CycleUtility.GetInstance(reader).AddReference(cycleId, cycleValue); } reader.ReadEndNode(name); // no setter method required return(null); } else { SetterMethod referenceReader = ReadReferencedObject(reader, field.Set); values[name] = null; reader.ReadEmptyNode(field.Name); return(referenceReader); } }
public ObjectLoopContext(string name, object value, ObjectMember member, int index) { Name = name; Value = value; Metadata = member; Index = index; }
public static IPropertyNodeVisitor Create(ObjectMember member, ObjectCallerBase parentHandlerPtr, ObjectVisitorOptions options) { void MemberValueSyncHandler(object instance) => parentHandlerPtr[member.MemberName] = instance; var handler = SafeObjectHandleSwitcher.Switch(options.AlgorithmKind)(member.MemberType).AndSetInstance(parentHandlerPtr.GetObject(member.MemberName)); var visitor = new InstanceVisitor(handler, member.MemberType, options); return(new PropertyNodeVisitor(member, visitor, options, MemberValueSyncHandler)); }
private async Task <List <ObjectMember> > GetObjectMembers(string id, string type) { ObjectRef obj = ObjectRef.FromEncodedString(id); ClassInfo info = objTypes[type]; MemberRef[] members = info.SimpleMember.Select(m => MemberRef.Make(obj, m.Name)).ToArray(); List <MemberValue> memValues = await Connection.GetMemberValues(members); var values = new List <ObjectMember>(); for (int i = 0; i < info.SimpleMember.Count; ++i) { SimpleMember m = info.SimpleMember[i]; if (m.Type == DataType.LocationRef && !hasLocations) { continue; } MemberValue v = memValues[i]; string defaultValue = ""; if (m.DefaultValue.HasValue && m.Dimension != Dimension.Array) { defaultValue = m.DefaultValue.Value.JSON; } else if (m.Type == DataType.Struct) { defaultValue = StdJson.ObjectToString(GetStructDefaultValue(m) !, indented: true, ignoreShouldSerializeMembers: false); //Console.WriteLine("=> " + m.Name + ": " + defaultValue); } else if (m.Type == DataType.LocationRef && rootLocation.HasValue) { defaultValue = DataValue.FromLocationRef(rootLocation.Value).JSON; } else { defaultValue = DataValue.FromDataType(m.Type, 1).JSON; } var member = new ObjectMember() { Key = obj.ToEncodedString() + "__" + m.Name, Name = m.Name, Type = m.Type.ToString(), IsScalar = m.Dimension == Dimension.Scalar, IsOption = m.Dimension == Dimension.Optional, IsArray = m.Dimension == Dimension.Array, Category = m.Category, Browseable = m.Browseable, Value = new JRaw(v.Value.JSON), ValueOriginal = new JRaw(v.Value.JSON), EnumValues = ResolveEnum(m), StructMembers = ResolveStruct(m), DefaultValue = defaultValue }; values.Add(member); } return(values); }
public ObjectMemberViewModel(ObjectMember objectMember) { this.objectMember = objectMember; _value = objectMember.Value; if (_value is ArrayMember arrayMember) { _value = new ArrayMemberViewModel(arrayMember); } }
internal MemberValueContractImpl(ObjectMember member, Type declaringType) { _member = member ?? throw new ArgumentNullException(nameof(member)); _lazyCallingHandler = new Lazy <ObjectCallerBase>(() => SafeObjectHandleSwitcher.Switch(AlgorithmKind.Precision)(declaringType)); DeclaringType = declaringType; MemberKind = member.Kind; IsBasicType = member.MemberType.IsBasicType(); _reflectorProvider = member.MemberType.GetReflector(); _attributes = _reflectorProvider.GetCustomAttributes(); IncludeAnnotations = HasValidationAnnotationDefined(_attributes); }
public void GetField() { var objMember = new ObjectMember(); var testObj = new TestObj(); Assert.Equal(2, objMember.GetValue(testObj, "IntFld")); Assert.Equal(2, objMember.GetValue(testObj, "IntFld")); // lets check cached accessor Assert.Equal("BBB", objMember.GetValue(testObj, "StrFld")); Assert.Equal("BBB", objMember.GetValue(testObj, "StrFld")); // lets check cached accessor Assert.Equal(DBNull.Value, objMember.GetValue(testObj, "ObjFld")); }
public void GetProperty() { var objMember = new ObjectMember(); var testObj = new TestObj(); Assert.Equal(1, objMember.GetValue(testObj, "IntProp")); Assert.Equal(1, objMember.GetValue(testObj, "IntProp")); // lets check cached accessor Assert.Equal("AAA", objMember.GetValue(testObj, "StrProp")); Assert.Equal("AAA", objMember.GetValue(testObj, "StrProp")); // lets check cached accessor Assert.Throws <InvalidOperationException>(() => { objMember.GetValue(testObj, "ZZZ"); }); }
public void Update(ObjectMember newObjectMember) { objectMember = newObjectMember; if (_value is ArrayMemberViewModel valueViewModel) { valueViewModel.Update((ArrayMember)objectMember.Value); } else { _value = objectMember.Value; RaisePropertyChanged("Value"); } }
public void should_create_member_value_and_use_actual_type_when_specified_type_is_object (Mode mode, Type specifiedType) { var backingValue = new ObjectMember { Value = new List <int>() }; var value = CreateMemberValue(mode, backingValue); value.Instance.ShouldEqual(backingValue.Value); value.SpecifiedType.Type.ShouldEqual(specifiedType); value.ActualType.Type.ShouldBe <List <int> >(); value.IsReadonly.ShouldEqual(false); }
public static VerifiableMemberContract ConvertToVerifiableMemberContract(this ObjectMember member, Type declaringType) { if (member is null) { throw new ArgumentNullException(nameof(member)); } if (declaringType is null) { throw new ArgumentNullException(nameof(declaringType)); } var impl = new MemberValueContractImpl(member, declaringType); return(new VerifiableMemberContract(impl)); }
public void Do(string name, object value, ObjectMember member, int?index = null) { if (_withNumber && index.HasValue) { _action0?.Invoke(name, value, member, index.Value); } else if (_withMember) { _action1?.Invoke(name, value, member); } else { _action2?.Invoke(name, value); } }
public void GetIndexer() { var objMember = new ObjectMember(); var testObj = new TestObj(); Assert.Throws <InvalidOperationException>(() => { objMember.GetValue(testObj, "1"); }); var testObjWithObjIdx = new TestObjWithObjIndexer(); Assert.Equal("ColName", objMember.GetValue(testObjWithObjIdx, "ColName")); var testObjWithStrIdx = new TestObjWithStrIndexer(); Assert.Equal(7, objMember.GetValue(testObjWithStrIdx, "ColName")); }
public TVal Do(string name, object value, ObjectMember member, int?index = null) { if (_withNumber && index.HasValue) { return(_action0 is null ? default : _action0.Invoke(name, value, member, index.Value)); } else if (_withMember) { return(_action1 is null ? default : _action1.Invoke(name, value, member)); } else { return(_action2 is null ? default : _action2.Invoke(name, value)); } }
private void Write(IDataWriter writer, ObjectMember field, object value) { string name = field.Name; writer.WriteStartNode(name); if (value != null) { var type = value.GetType(); var customFormatterAttribute = field.Member.GetCustomAttribute <CustomFormatterAttribute>(false); var formatter = customFormatterAttribute?.Formatter ?? FormatterFactory.Get(type); writer.WriteType(type); formatter.Write(writer, value); } writer.WriteEndNode(name); }
//root public PropertyNodeVisitor( ObjectMember member, InstanceVisitor visitor, ObjectVisitorOptions options, Action <object> memberValueSyncHandler) { _options = options ?? throw new ArgumentNullException(nameof(options)); _member = member ?? throw new ArgumentNullException(nameof(member)); Deep = 0; Root = this; Parent = null; _visitor = visitor ?? throw new ArgumentNullException(nameof(visitor)); _signature = visitor.Signature; _rootSignatureCached = new() { _signature }; _parentSignatureCached = default; _signatureCached = new() { _signature }; _childrenNodes = new(); MemberValueSyncHandler = memberValueSyncHandler ?? throw new ArgumentNullException(nameof(memberValueSyncHandler)); }
//child public PropertyNodeVisitor( ObjectMember member, PropertyNodeVisitor rootVisitor, PropertyNodeVisitor parentVisitor, InstanceVisitor visitor, ObjectVisitorOptions options, Action <object> memberValueSyncHandler, List <int> rootSignatureCacheRef, List <int> parentSignatureCacheRef, int deep) { _member = member ?? throw new ArgumentNullException(nameof(member)); Deep = deep; Root = rootVisitor ?? throw new ArgumentNullException(nameof(rootVisitor)); Parent = parentVisitor ?? throw new ArgumentNullException(nameof(parentVisitor)); _visitor = visitor ?? throw new ArgumentNullException(nameof(visitor)); _signature = visitor.Signature; _rootSignatureCached = rootSignatureCacheRef; _parentSignatureCached = parentSignatureCacheRef; _signatureCached = new() { _signature }; _childrenNodes = new(); MemberValueSyncHandler = memberValueSyncHandler ?? throw new ArgumentNullException(nameof(memberValueSyncHandler)); _rootSignatureCached.Add(_signature); _parentSignatureCached.Add(_signature); }
public void should_create_member_value_and_use_actual_type_when_specified_type_is_object (Mode mode, Type specifiedType) { var backingValue = new ObjectMember { Value = new List<int>() }; var value = CreateMemberValue(mode, backingValue); value.Instance.ShouldEqual(backingValue.Value); value.SpecifiedType.Type.ShouldEqual(specifiedType); value.ActualType.Type.ShouldBe<List<int>>(); value.IsReadonly.ShouldEqual(false); }
protected virtual ObjectMember VisitObjectMember(ObjectMember node) { return(VisitSyntaxNode(node) as ObjectMember); }
protected override ObjectMember VisitObjectMember(ObjectMember node) { visitedObjectMember = true; Assert.IsTrue(node.ToString().StartsWith("\"Property\" :")); return(base.VisitObjectMember(node)); }