Как я могу вызвать метод, подобный Console.Строка записи в CodeStatement из CodeConditionStatement?

#c# #.net #codedom

#c# #.net #codedom

Вопрос:

Я не могу понять, как вызвать и использовать метод в операторе if через CodeDom. Кто-нибудь уже делал что-то подобное?

На самом деле, параметры, которые представляют «истинное утверждение» (в CodeConditionStatement), требуют параметров ‘statement’, но единственный известный мне способ вызвать метод — это CodeMethodInvokeExpression, который является ‘выражением’, а не ‘заявлением’, поэтому он выдает мне ошибку для этого.

 CodeConditionStatement ifPath = new CodeConditionStatement(
                // condition: System.IO.Path.Exit(path)
                new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(method.Parameters[1].Name), "Path.Exist", new CodeExpression[] { new CodeVariableReferenceExpression("path") }),
                // true:
                new CodeStatement[] {
                    new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(method.Parameters[0].Name), "Console.WriteLine", new CodeExpression[] { new CodePrimitiveExpression("Saisir mot de passe") })
                },
                // false:
                new CodeStatement[] { new CodeCommentStatement("Else block. If condition is false, execute these statements.") }
            );
  

В настоящее время он просто выдает сообщение об ошибке, в котором говорится «не удалось неявно преобразовать тип ‘System.CodeDom.CodeMethodInvokeExpression»в»системе.CodeDom.CodeStatement'».

Комментарии:

1. Я предполагаю, что вы хотите использовать CodeExpressionStatement вместо CodeMethodInvokeExpression …

2. Насколько да! Это просто решает мою проблему. Спасибо. Я вроде как новичок во всем этом.