本文整理汇总了C#中System.CodeDom.Compiler.CodeDomProvider.GenerateCodeFromType方法的典型用法代码示例。如果您正苦于以下问题:C# CodeDomProvider.GenerateCodeFromType方法的具体用法?C# CodeDomProvider.GenerateCodeFromType怎么用?C# CodeDomProvider.GenerateCodeFromType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.CodeDom.Compiler.CodeDomProvider
的用法示例。
在下文中一共展示了CodeDomProvider.GenerateCodeFromType方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PostProcess
/// <summary>Called when extension shall process generated code</summary>
/// <param name="code">The code</param>
/// <param name="provider">CodeDOM provider (the language)</param>
/// <version version="1.5.3">Parameter <c>Provider</c> renamed to <c>provider</c></version>
public void PostProcess(ref string code, CodeDomProvider provider)
{
System.IO.StringWriter tw = new System.IO.StringWriter();
provider.GenerateCodeFromStatement(new CodeCommentStatement(FirtsLineOfAccessor), tw, new System.CodeDom.Compiler.CodeGeneratorOptions());
string srch = tw.GetStringBuilder().ToString();
if (srch.EndsWith("\r\n")) srch = srch.Substring(0, srch.Length - 2);
else if (srch.EndsWith("\r") || srch.EndsWith("\n")) srch = srch.Substring(0, srch.Length - 1);
tw = new System.IO.StringWriter();
CodeTypeDeclaration foo = new CodeTypeDeclaration("foo");
foo.CustomAttributes.Add(NewAttribute);
provider.GenerateCodeFromType(foo, tw, new System.CodeDom.Compiler.CodeGeneratorOptions());
string attr = new System.IO.StringReader(tw.GetStringBuilder().ToString()).ReadLine();
System.IO.StringReader sr = new System.IO.StringReader(code);
List<String> Lines = new List<string>();
do {
string line = sr.ReadLine();
if (line == null) break;
if (line.EndsWith(srch))
Lines[Lines.Count - 1] = attr + "\r\n" + Lines[Lines.Count - 1];
else
Lines.Add(line);
} while (true);
System.Text.StringBuilder b = new System.Text.StringBuilder();
foreach (string line in Lines)
b.AppendLine(line);
code = b.ToString();
}
示例2: Convert
public string Convert(CodeDomProvider codeProvider)
{
StringBuilder code = new StringBuilder();
List<XmlQualifiedName> arrayTypeList = BuildDataContractArrayTypeList();
try
{
CodeCompileUnit compileUnit = new CodeCompileUnit();
CodeNamespace namespace2 = new CodeNamespace();
compileUnit.Namespaces.Add(namespace2);
XmlCodeExporter codeExporter = new XmlCodeExporter(namespace2, compileUnit, codeProvider, CodeGenerationOptions.GenerateProperties, null);
// XmlSchemaImporter needs XmlSchemas and not XmlSchemaSet
XmlSchemas userSchemas = new XmlSchemas();
foreach (XmlSchema schema in schemas.Schemas())
{
userSchemas.Add(schema);
}
XmlSchemaImporter schemaImporter = new XmlSchemaImporter(userSchemas, CodeGenerationOptions.GenerateProperties, codeProvider, new ImportContext(new CodeIdentifiers(), false));
foreach (XmlSchema schema in userSchemas)
{
if (schema != null)
{
foreach (XmlSchemaElement element in schema.Elements.Values)
{
// Don't generate code for abstract elements or array types
if (!element.IsAbstract && !arrayTypeList.Contains(element.QualifiedName))
{
XmlTypeMapping mapping = schemaImporter.ImportTypeMapping(element.QualifiedName);
codeExporter.ExportTypeMapping(mapping);
}
}
}
}
CodeTypeDeclarationCollection types = namespace2.Types;
if ((types == null) || (types.Count == 0))
{
//RtlAwareMessageBox.Show(
PublicDI.log.error("The XML instance or XML Schema is valid, but no classes could be generated to match. Please ensure it contains a root element with some nested elements inside of it.");
//, "Error",
// MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, 0);
}
else
{
CodeGenerator.ValidateIdentifiers(namespace2);
// Now we have to run Silverlight-specific fix-up
//DC
// ServiceContractGenerator generator = new ServiceContractGenerator(compileUnit);
// WcfSilverlightCodeGenerationExtension fixupExtension = new WcfSilverlightCodeGenerationExtension();
// fixupExtension.ClientGenerated(generator);
using (StringWriter writer = new StringWriter(code, CultureInfo.CurrentCulture))
{
foreach (CodeTypeDeclaration type in namespace2.Types)
{
codeProvider.GenerateCodeFromType(type, writer, null);
}
}
}
}
catch (Exception exception)
{
if (((exception is ThreadAbortException) || (exception is StackOverflowException)) || (exception is OutOfMemoryException))
{
throw;
}
//RtlAwareMessageBox.Show( //DC
PublicDI.log.error("The XML instance or XML Schema is valid, but no classes could be generated to match." + Environment.NewLine + Environment.NewLine + exception.Message);
//, "Error",
// MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, 0);
}
return code.ToString();
}
示例3: 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();
}
示例4: 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();
}