Ejemplo n.º 1
0
        protected void ProduceNestedProperties(string instanceName, object instance, GenerationContext context)
        {
            foreach (var propertyInfo in Meta.NestedProperties)
            {
                if (!Meta.IsDefault(propertyInfo, instance))
                {
                    var generator = _tgr.GetGeneratorFor(propertyInfo.PropertyType);
                    var value     = Meta.Value(propertyInfo, instance);
                    generator.New(value, context);
                    var varName = context.GetDefined(value);
                    var ae      = SafeAssignment(instanceName, propertyInfo.Name, IdentifierName(varName));

                    context.LateBound.Enqueue(ExpressionStatement(ae));
                    context.AddUsing(propertyInfo.PropertyType.Namespace);
                }
            }
        }
Ejemplo n.º 2
0
        private void ProduceDictionaryProperties(string instanceName, object instance, GenerationContext context)
        {
            foreach (var propertyInfo in Meta.DictionaryProperties)
            {
                if (!Meta.IsDefault(propertyInfo, instance))
                {
                    var value        = Meta.Value(propertyInfo, instance);
                    var collCreation =
                        ProceedDictionary(_tgr, propertyInfo.PropertyType, value as IDictionary, context);

                    var ae = SafeAssignment(instanceName, propertyInfo.Name, collCreation);

                    context.LateBound.Enqueue(ExpressionStatement(ae));
                    context.AddUsing(propertyInfo.PropertyType.Namespace);
                }
            }
        }
Ejemplo n.º 3
0
        private void ProduceCollectionProperties(string instanceName, object instance, GenerationContext context)
        {
            List <ExpressionSyntax> initNodes = new List <ExpressionSyntax>();

            foreach (var propertyInfo in Meta.CollectionProperties)
            {
                if (!Meta.IsDefault(propertyInfo, instance))
                {
                    var value        = Meta.Value(propertyInfo, instance);
                    var collCreation =
                        propertyInfo.PropertyType.IsTuple()
                            ? ProceedTuple(_tgr, value.GetTupleValues(), context)
                            : ProceedCollection(_tgr, propertyInfo.PropertyType, value as IEnumerable, context);

                    var ae = SafeAssignment(instanceName, propertyInfo.Name, collCreation);

                    context.LateBound.Enqueue(ExpressionStatement(ae));
                    context.AddUsing(propertyInfo.PropertyType.Namespace);
                }
            }
        }
Ejemplo n.º 4
0
        private List <StatementSyntax> ProduceInlineableProperties(string instanceName, object instance, GenerationContext context)
        {
            List <StatementSyntax> initNodes = new List <StatementSyntax>();

            foreach (var propertyInfo in Meta.InlineProperties)
            {
                if (!Meta.IsDefault(propertyInfo, instance))
                {
                    var pName = propertyInfo.Name;
                    // "value"
                    var propValue = TypeInitConstructor.Construct(propertyInfo.PropertyType, Meta.Value(propertyInfo, instance));

                    var invocation = SafeAssignment(instanceName, pName, propValue);

                    initNodes.Add(ExpressionStatement(invocation));
                    var u = ExtractEnumUsing(propertyInfo.PropertyType);
                    context.AddUsing(u);
                }
            }

            return(initNodes);
        }