public void GenerateTypeIterator(IILGen ilGenerator, Action <IILGen> pushObj, Action <IILGen> pushCtx, Type type) { var allProps = _objectTypeDescriptor.GetPreferredType() !.GetProperties(BindingFlags.Instance | BindingFlags.Public); foreach (var pair in _objectTypeDescriptor._fields) { if (pair.Value.Sealed) { continue; } ilGenerator .Do(pushCtx) .Do(pushObj) .Castclass(_objectTypeDescriptor._type !) .Callvirt(allProps.First(p => GetPersistentName(p) == pair.Key).GetAnyGetMethod() !) .Callvirt(typeof(IDescriptorSerializerLiteContext).GetMethod(nameof(IDescriptorSerializerLiteContext.StoreNewDescriptors)) !); } }
public void GenerateTypeIterator(IILGen ilGenerator, Action <IILGen> pushObj, Action <IILGen> pushCtx, Type type) { var allProps = _objectTypeDescriptor.GetPreferredType().GetProperties(); foreach (var pair in _objectTypeDescriptor._fields) { if (pair.Value.Sealed) { continue; } ilGenerator .Do(pushCtx) .Do(pushObj) .Castclass(_objectTypeDescriptor._type) .Callvirt(allProps.First(p => GetPersitentName(p) == pair.Key).GetGetMethod()) .Callvirt(() => default(IDescriptorSerializerLiteContext).StoreNewDescriptors(null)); } }