コード例 #1
0
ファイル: CSharpHelper.cs プロジェクト: yesmey/efcore
        private string Fragment(NestedClosureCodeFragment fragment, int indent)
        {
            if (fragment.MethodCalls.Count == 1)
            {
                return(fragment.Parameter + " => " + Fragment(fragment.MethodCalls[0], typeQualified: false, fragment.Parameter, indent));
            }

            var builder = new IndentedStringBuilder();

            builder.AppendLine(fragment.Parameter + " =>");
            for (var i = -1; i < indent; i++)
            {
                builder.IncrementIndent();
            }
            builder.AppendLine("{");
            using (builder.Indent())
            {
                foreach (var methodCall in fragment.MethodCalls)
                {
                    builder.AppendLines(Fragment(methodCall, typeQualified: false, fragment.Parameter, indent + 1), skipFinalNewline: true);
                    builder.AppendLine(";");
                }
            }

            builder.AppendLine("}");

            return(builder.ToString());
        }
コード例 #2
0
        public virtual void UseProviderMethodIsGeneratedCorrectlyWithOptions()
        {
            var codeGenerator = new MySQLCodeGenerator(
                new ProviderCodeGeneratorDependencies(
                    Enumerable.Empty <IProviderCodeGeneratorPlugin>()));

            var providerOptions = new MethodCallCodeFragment("SetProviderOption");

            var result = codeGenerator.GenerateUseProvider("Data Source=Test", providerOptions);

            Assert.AreEqual("UseMySQL", result.Method);
            Assert.That(result.Arguments, Has.Exactly(1).EqualTo("Data Source=Test"));
            Assert.IsInstanceOf <NestedClosureCodeFragment>(result.Arguments[1]);
            NestedClosureCodeFragment nestedClosure = (NestedClosureCodeFragment)result.Arguments[1];

            Assert.AreEqual("x", nestedClosure.Parameter);
            Assert.AreSame(providerOptions, nestedClosure.MethodCall);
            Assert.Null(result.ChainedCall);
        }
コード例 #3
0
ファイル: CSharpHelper.cs プロジェクト: AshkanAbd/efcore
        private string Fragment(NestedClosureCodeFragment fragment)
        {
            if (fragment.MethodCalls.Count == 1)
            {
                return(fragment.Parameter + " => " + fragment.Parameter + Fragment(fragment.MethodCalls[0]));
            }

            var builder = new IndentedStringBuilder();

            builder.AppendLine(fragment.Parameter + " =>");
            builder.AppendLine("{");
            using (builder.Indent())
            {
                foreach (var methodCall in fragment.MethodCalls)
                {
                    builder.Append(fragment.Parameter + Fragment(methodCall));
                    builder.AppendLine(";");
                }
            }

            builder.AppendLine("}");

            return(builder.ToString());
        }
コード例 #4
0
 private string Fragment(NestedClosureCodeFragment fragment)
 => fragment.Parameter + " => " + fragment.Parameter + Fragment(fragment.MethodCall);