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();
			}
Exemple #2
0
        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);
        }
Exemple #5
0
                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();