void InitFromItemDescriptor(ITypeDescriptor descriptor) { if (descriptor == _itemDescriptor && _name != null) return; _itemDescriptor = descriptor; if ((descriptor.Name?.Length ?? 0) == 0) return; _itemType = _itemDescriptor.GetPreferedType(); Sealed = _itemDescriptor.Sealed; Name = $"List<{_itemDescriptor.Name}>"; }
void InitFromKeyValueDescriptors(ITypeDescriptor keyDescriptor, ITypeDescriptor valueDescriptor) { if (_keyDescriptor == keyDescriptor && _valueDescriptor == valueDescriptor && _name != null) return; _keyDescriptor = keyDescriptor; _valueDescriptor = valueDescriptor; if ((_keyDescriptor.Name?.Length ?? 0) == 0 || (_valueDescriptor.Name?.Length ?? 0) == 0) return; _keyType = _keyDescriptor.GetPreferedType(); _valueType = _valueDescriptor.GetPreferedType(); Sealed = _keyDescriptor.Sealed && _valueDescriptor.Sealed; Name = $"Dictionary<{_keyDescriptor.Name}, {_valueDescriptor.Name}>"; }
void InitFromItemDescriptor(ITypeDescriptor descriptor) { if (descriptor == _itemDescriptor) return; _itemDescriptor = descriptor; _itemType = _itemDescriptor.GetPreferedType(); Sealed = _itemDescriptor.Sealed; Name = "List<" + _itemDescriptor.Name + ">"; }
Action<AbstractBufferedWriter, ITypeBinarySerializerContext, object> BuildComplexSaver(ITypeDescriptor descriptor) { var method = ILBuilder.Instance.NewMethod<Action<AbstractBufferedWriter, ITypeBinarySerializerContext, object>>(descriptor.Name + "Saver"); var il = method.Generator; descriptor.GenerateSave(il, ilgen => ilgen.Ldarg(0), ilgen => ilgen.Ldarg(1), ilgen => { ilgen.Ldarg(2); var type = descriptor.GetPreferedType(); if (type != typeof(object)) { ilgen.Castclass(type); } }, descriptor.GetPreferedType()); il.Ret(); return method.Create(); }
public Type LoadAsType(ITypeDescriptor descriptor, Type targetType) { return descriptor.GetPreferedType(targetType) ?? TypeNameMapper.ToType(descriptor.Name) ?? typeof(object); }
void InitFromKeyValueDescriptors(ITypeDescriptor keyDescriptor, ITypeDescriptor valueDescriptor) { if (_keyDescriptor == keyDescriptor && _valueDescriptor == valueDescriptor) return; _keyDescriptor = keyDescriptor; _valueDescriptor = valueDescriptor; _keyType = _keyDescriptor.GetPreferedType(); _valueType = _valueDescriptor.GetPreferedType(); Sealed = _keyDescriptor.Sealed && _valueDescriptor.Sealed; Name = string.Format("Dictionary<{0}, {1}>", _keyDescriptor.Name, _valueDescriptor.Name); }
Action<AbstractBufferedWriter, object> NewSimpleSaver(ITypeDescriptor descriptor) { if (descriptor.AnyOpNeedsCtx()) return null; var method = ILBuilder.Instance.NewMethod<Action<AbstractBufferedWriter, object>>(descriptor.Name + "SimpleSaver"); var il = method.Generator; descriptor.GenerateSave(il, ilgen => ilgen.Ldarg(0), null, ilgen => { ilgen.Ldarg(1); var type = descriptor.GetPreferedType(); if (type != typeof(object)) { ilgen.UnboxAny(type); } }, descriptor.GetPreferedType()); il.Ret(); return method.Create(); }
public Type LoadAsType(ITypeDescriptor descriptor) { return descriptor.GetPreferedType() ?? NameToType(descriptor.Name) ?? typeof(object); }
public Type LoadAsType(ITypeDescriptor descriptor) { return(descriptor.GetPreferedType() ?? TypeNameMapper.ToType(descriptor.Name) ?? typeof(object)); }
public Type LoadAsType(ITypeDescriptor descriptor, Type targetType) { return(descriptor.GetPreferedType(targetType) ?? NameToType(descriptor.Name) ?? typeof(object)); }