public IWriter Get(TypeInfo parameter) { var typeInfo = _locator.Get(parameter); var element = _identities.Get(typeInfo); var identity = _store.Get($"ArrayOf{element.Name}", element.Identifier ?? string.Empty); return new ArrayIdentity(identity).Adapt(); }
protected override Action <object, object> Create(TypeInfo parameter) { var elementType = _locator.Get(parameter); if (elementType != null) { var add = _add.Locate(parameter, elementType); if (add != null) { // Object (type object) from witch the data are retrieved var itemObject = Expression.Parameter(typeof(object), "item"); var value = Expression.Parameter(typeof(object), "value"); // Object casted to specific type using the operator "as". var itemCasted = Expression.Convert(itemObject, parameter.AsType()); var castedParam = Expression.Convert(value, elementType.AsType()); var conversion = Expression.Call(itemCasted, add, castedParam); var lambda = Expression.Lambda <Action <object, object> >(conversion, itemObject, value); var result = lambda.Compile(); return(result); } } return(null); }
public bool IsSatisfiedBy(TypeInfo parameter) { var itemType = _locator.Get(parameter); var result = itemType != null && _definition.MakeGenericType(itemType) == parameter; return(result); }
public ISerializer Get(TypeInfo parameter) { var itemType = _locator.Get(parameter); var serializer = _serializers.Get(itemType); var item = new Serializer(serializer, new CollectionItemAwareWriter(serializer)); var result = _contents.Get(new CollectionContentInput(item, parameter, itemType)); return(result); }
public ISerializer Get(IMember parameter) { var type = _locator.Get(parameter.MemberType); var content = _contents.Get(type); var result = VariableTypeSpecification.Default.IsSatisfiedBy(type) ? new Serializer(content, new VariableTypedMemberWriter(type, _runtime, content)) : content; return(result); }
public IWriter Get(TypeInfo parameter) => new ArrayIdentity(_identity, _locator.Get(parameter)).Adapt();