예제 #1
0
        public override void VisitBlock(BlockSyntax node)
        {
            // Ein Block ist bei uns immer ein Array aus Werten
            var arrayExpr = new ArrayExpressionBuilder();

            arrayExpr.Elements.AddRange(node.Statements.Select(ConvertToExpression));

            Result = arrayExpr;
        }
예제 #2
0
파일: In.cs 프로젝트: rneilturner/win-tools
 /// <summary>
 /// Factory for write expression builder.
 /// </summary>
 /// <returns>IWriteExpressionBuilder implementation.</returns>
 protected virtual IWriteExpressionBuilder CreateArrayExpressionBuilder()
 {
     IWriteExpressionBuilder writeBuilder = null;
     if (this.QuSubArray) // If this is an outer array
     {
         writeBuilder = new ArrayExpressionOuterBuilder();
     }
     else
     {
         writeBuilder = new ArrayExpressionBuilder();
     }
     return writeBuilder;
 }
예제 #3
0
파일: In.cs 프로젝트: rneilturner/win-tools
                /// <summary>
                /// Factory for write expression builder.
                /// </summary>
                /// <returns>IWriteExpressionBuilder implementation.</returns>
                protected override IWriteExpressionBuilder CreateArrayExpressionBuilder()
                {
                    IWriteExpressionBuilder writeBuilder = null;
                    if (!this.QuSubArray) // If this is an inner array
                    {
                        // For some (crappy) reason, outer ArrayMarshaller can deduce its generic type,
                        // but innermost (e.g. ArrayMarshaller<string>(Body_AddString)) needs the type specified.
                        // Yeck.
                        SetMethodType(this, this.paramtype.CodeType.ArrayElementType);

                        // Override behaviour with special array expression builder for dictionary values.
                        writeBuilder = new ArrayExpressionBuilder();

                    } // Ends if this is an inner array
                    else // Else not inner array
                    {
                        // Just do the standard action.
                        writeBuilder = base.CreateArrayExpressionBuilder();

                    } // Ends else not inner array

                    return writeBuilder;
                }