本文整理汇总了C#中System.CodeDom.Compiler.CodeDomProvider.GenerateCodeFromNamespace方法的典型用法代码示例。如果您正苦于以下问题:C# CodeDomProvider.GenerateCodeFromNamespace方法的具体用法?C# CodeDomProvider.GenerateCodeFromNamespace怎么用?C# CodeDomProvider.GenerateCodeFromNamespace使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.CodeDom.Compiler.CodeDomProvider
的用法示例。
在下文中一共展示了CodeDomProvider.GenerateCodeFromNamespace方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateTestFile
public void GenerateTestFile(SpecFlowFeatureFile featureFile, CodeDomProvider codeProvider, TextReader inputReader, TextWriter outputWriter)
{
outputWriter = new HackedWriter(outputWriter);
var codeNamespace = GenerateTestFileCode(featureFile, inputReader);
var options = new CodeGeneratorOptions
{
BracingStyle = "C"
};
AddSpecFlowHeader(codeProvider, outputWriter);
codeProvider.GenerateCodeFromNamespace(codeNamespace, outputWriter, options);
outputWriter.Flush();
}
示例2: GenerateTestFile
public void GenerateTestFile(FeatureFileInput featureFile, CodeDomProvider codeProvider, TextReader inputReader, TextWriter outputWriter)
{
outputWriter = new IndentProcessingWriter(outputWriter);
CodeDomHelper codeDomHelper = new CodeDomHelper(codeProvider);
var codeNamespace = GenerateTestFileCode(featureFile, inputReader, codeProvider, codeDomHelper);
var options = new CodeGeneratorOptions
{
BracingStyle = "C"
};
AddSpecFlowHeader(codeProvider, outputWriter, codeDomHelper);
codeProvider.GenerateCodeFromNamespace(codeNamespace, outputWriter, options);
AddSpecFlowFooter(codeProvider, outputWriter, codeDomHelper);
outputWriter.Flush();
}
示例3: GenerateTestCase
private void GenerateTestCase(CodeDomProvider provider, string extension, string ns, string name, string area,
string[] actions, TextWriter output)
{
CodeNamespace nsunit = GenerateControllerTestCode(ns, name, area, actions);
FileInfo controllerFile = new FileInfo(
Path.Combine(testsDir.FullName, name + "Tests" + extension) );
if (!controllerFile.Exists)
{
using (StreamWriter sw = new StreamWriter(controllerFile.FullName, false, Encoding.Default))
{
CodeGeneratorOptions opts = new CodeGeneratorOptions();
opts.BracingStyle = "C";
#if DOTNET2
provider.GenerateCodeFromNamespace(nsunit, sw, opts);
#else
provider.CreateGenerator().GenerateCodeFromNamespace(nsunit, sw, opts);
#endif
}
}
else
{
output.WriteLine("Skipping {0} as the files exists", controllerFile.FullName);
}
}
示例4: ConstructGeneratorCode
private static String ConstructGeneratorCode(TemplateItem item, Boolean lineNumbers, String namespaceName, CodeDomProvider provider)
{
// 准备类名和命名空间
CodeNamespace codeNamespace = new CodeNamespace(namespaceName);
// 加入引用的命名空间
foreach (String str in item.Imports)
{
if (!String.IsNullOrEmpty(str)) codeNamespace.Imports.Add(new CodeNamespaceImport(str));
}
CodeTypeDeclaration typeDec = new CodeTypeDeclaration(item.ClassName);
typeDec.IsClass = true;
codeNamespace.Types.Add(typeDec);
// 基类
if (!String.IsNullOrEmpty(item.BaseClassName))
typeDec.BaseTypes.Add(new CodeTypeReference(item.BaseClassName));
else if (!String.IsNullOrEmpty(BaseClassName))
typeDec.BaseTypes.Add(new CodeTypeReference(BaseClassName));
else
typeDec.BaseTypes.Add(new CodeTypeReference(typeof(TemplateBase)));
if (!String.IsNullOrEmpty(item.Name)) typeDec.LinePragma = new CodeLinePragma(item.Name, 1);
// Render方法
CreateRenderMethod(item.Blocks, lineNumbers, typeDec);
// 代码生成选项
CodeGeneratorOptions options = new CodeGeneratorOptions();
options.VerbatimOrder = true;
options.BlankLinesBetweenMembers = false;
options.BracingStyle = "C";
// 其它类成员代码块
Boolean firstMemberFound = false;
foreach (Block block in item.Blocks)
{
firstMemberFound = GenerateMemberForBlock(block, typeDec, lineNumbers, provider, options, firstMemberFound);
}
// 模版变量
if (item.Vars != null && item.Vars.Count > 0)
{
// 构建静态构造函数,初始化静态属性Vars
CreateCctorMethod(typeDec, item.Vars);
//public Int32 VarName
//{
// get { return (Int32)GetData("VarName"); }
// set { Data["VarName"] = value; }
//}
foreach (String v in item.Vars.Keys)
{
TypeX vtype = TypeX.Create(item.Vars[v]);
String codeName = vtype.FullName;
StringBuilder sb = new StringBuilder();
sb.AppendLine();
sb.AppendFormat("public {0} {1}", codeName, v);
sb.AppendLine("{");
sb.AppendFormat(" get {{ return GetData<{0}>(\"{1}\"); }}", codeName, v);
sb.AppendLine();
sb.AppendFormat(" set {{ Data[\"{0}\"] = value; }}", v);
sb.AppendLine();
sb.AppendLine("}");
CodeSnippetTypeMember member = new CodeSnippetTypeMember(sb.ToString());
typeDec.Members.Add(member);
}
}
// 输出
using (StringWriter writer = new StringWriter())
{
provider.GenerateCodeFromNamespace(codeNamespace, new IndentedTextWriter(writer), options);
return writer.ToString();
}
}
示例5: GenerateFromNamespace
/// <summary>
/// Generates source code from given namespace.
/// </summary>
private static string GenerateFromNamespace(CodeDomProvider codeProvider, System.CodeDom.CodeNamespace codeNamespace, bool blankLinesBetweenMembers)
{
var result = new StringBuilder();
var writer = new StringWriter(result);
var options = new CodeGeneratorOptions();
options.BlankLinesBetweenMembers = blankLinesBetweenMembers;
options.ElseOnClosing = true;
options.VerbatimOrder = true;
options.BracingStyle = "C";
// generate the code:
codeProvider.GenerateCodeFromNamespace(codeNamespace, writer, options);
// send it to the StringBuilder object:
writer.Flush();
return result.ToString();
}
示例6: BuildSource
/// <summary>
/// Build the assembly using CodeDom.
/// </summary>
/// <param name="compiler">instance of compiler</param>
/// <param name="localVars">string with local variable declarations, generated from expression</param>
/// <param name="expression">expression to be compiled</param>
/// <param name="variables">types of values in this dictionary determine local variable types</param>
/// <param name="returnsBool">should be true if the expression must return a boolean</param>
/// <returns>C# source</returns>
private static string BuildSource(CodeDomProvider compiler, string localVars, string expression, Dictionary<string, object> variables, bool returnsBool)
{
var sw = new StringWriter();
var ns = new CodeNamespace("ExpressionEvaluator");
ns.Imports.Add(new CodeNamespaceImport("System"));
ns.Imports.Add(new CodeNamespaceImport("System.Collections.Generic"));
ns.Imports.Add(new CodeNamespaceImport("Imarda.Lib"));
ns.Imports.Add(new CodeNamespaceImport("IXLCompiler"));
var decl = new CodeTypeDeclaration("Calculator") { IsClass = true, Attributes = MemberAttributes.Public };
var method = new CodeMemberMethod { Name = "Evaluate" };
method.Parameters.Add(new CodeParameterDeclarationExpression(new CodeTypeReference(typeof(Dictionary<string, object>)), "args"));
method.ReturnType = new CodeTypeReference(returnsBool ? typeof(bool) : typeof(object));
method.Comments.Add(new CodeCommentStatement("Calculate an expression", true));
method.Attributes = MemberAttributes.Public;
var stmt = method.Statements;
foreach (var key in variables.Keys)
{
// only generate local variable decl/assignment if the variable occurs on the expression
if (Regex.IsMatch(expression, @"\b" + Regex.Escape(key) + @"\b"))
{
object obj = variables[key];
Type type = obj == null ? typeof(string) : obj.GetType();
var vardecl = string.Format("{0} {1} = args.ContainsKey(\"{1}\") ? ({0})(args[\"{1}\"]) : default({0})", type, key);
stmt.Add(new CodeSnippetExpression(vardecl));
}
}
if (!string.IsNullOrEmpty(localVars)) stmt.Add(new CodeSnippetStatement(localVars));
stmt.Add(new CodeSnippetStatement("#line 1"));
stmt.Add(new CodeAssignStatement(new CodeSnippetExpression(returnsBool ? "bool result" : "object result"), new CodeSnippetExpression(expression)));
stmt.Add(new CodeMethodReturnStatement(new CodeVariableReferenceExpression("result")));
decl.Members.Add(method);
ns.Types.Add(decl);
compiler.GenerateCodeFromNamespace(ns, sw, new CodeGeneratorOptions
{
IndentString = "\t",
BlankLinesBetweenMembers = false
});
sw.Close();
return sw.ToString();
}
示例7: GenerateCode
private static string GenerateCode(CodeObject c, CodeDomProvider provider)
{
var sb = new StringBuilder();
var writer = new StringWriter(sb);
var options = new CodeGeneratorOptions();
if (c is CodeStatement)
{
provider.GenerateCodeFromStatement((CodeStatement)c, writer, options);
}
else if (c is CodeCompileUnit)
{
provider.GenerateCodeFromCompileUnit((CodeCompileUnit)c, writer, options);
}
else if (c is CodeExpression)
{
provider.GenerateCodeFromExpression((CodeExpression)c, writer, options);
}
else if (c is CodeTypeMember)
{
provider.GenerateCodeFromMember((CodeTypeMember)c, writer, options);
}
else if (c is CodeTypeDeclaration)
{
provider.GenerateCodeFromType((CodeTypeDeclaration)c, writer, options);
}
else if (c is CodeNamespace)
{
provider.GenerateCodeFromNamespace((CodeNamespace)c, writer, options);
}
else
{
throw new ArgumentException($"Tests not set up for unexpected type: {c.GetType()}");
}
return sb.ToString();
}
示例8: GenerateCode
private static string GenerateCode(CodeObject c, CodeDomProvider provider)
{
var sb = new StringBuilder();
var writer = new StringWriter(sb);
var options = new CodeGeneratorOptions();
if (c is CodeStatement)
{
provider.GenerateCodeFromStatement((CodeStatement)c, writer, options);
}
else if (c is CodeCompileUnit)
{
provider.GenerateCodeFromCompileUnit((CodeCompileUnit)c, writer, options);
}
else if (c is CodeExpression)
{
provider.GenerateCodeFromExpression((CodeExpression)c, writer, options);
}
else if (c is CodeTypeMember)
{
provider.GenerateCodeFromMember((CodeTypeMember)c, writer, options);
}
else if (c is CodeTypeDeclaration)
{
provider.GenerateCodeFromType((CodeTypeDeclaration)c, writer, options);
}
else if (c is CodeNamespace)
{
provider.GenerateCodeFromNamespace((CodeNamespace)c, writer, options);
}
else
{
Assert.False(true, $"Unknown type: {c.GetType()}");
}
return sb.ToString();
}