Esempio n. 1
0
        internal void Compile(MethodInvoke method)
        {
            // init
            method.AddElement(this);
            method.AddCode(method.ParameterName);
            method.AddLiteral(this.Prefix);
            method.AddLiteral(this.Suffix);

            // fix
            var family = (this.NameParts == null || !this.NameParts.Any(x => x.Name == NamePartName.Family) ? new NamePartElement() : this.NameParts.Single(x => x.Name == NamePartName.Family));
            var given  = (this.NameParts == null || !this.NameParts.Any(x => x.Name == NamePartName.Given) ? new NamePartElement() : this.NameParts.Single(x => x.Name == NamePartName.Given));

            // name part parameters
            using (var lambda = method.AddLambdaExpression(false))
            {
                // array
                lambda.AppendArray("NamePartParameters", new NamePartElement[] { family, given }, (part, scope) =>
                {
                    // init
                    using (var m = scope.AppendMethodInvoke("new NamePartParameters", part))
                    {
                        part.Compile(m);
                    }
                });
            }

            // default parameters
            method.AddDefaultParameters();
        }