CodeCompileUnit을 사용하여 CodeDOM을 통해 코드를 생성 할 때 유형을 정의하는 네임 스페이스와 별도로 CodeNamespace를 만들어 네임 스페이스를 가져올 수 있습니다. Imports 속성을 사용하면 원하는 네임 스페이스를 추가 할 수 있습니다. CodeCompile 단위에 CodeNamespace를 추가하면 가져 오기가 CodeDOM에 의해 생성 된 파일의 맨 위에 나타납니다. 다음 CodeDOM을 그래프를 컴파일하기 위해에서는 CSharpCodeProvider를 사용하여 예를 들어CodeSnippetCompileUnit에서 네임 스페이스 가져 오기
는 :
CodeCompileUnit compileUnit = new CodeCompileUnit();
CodeNamespace importsNamespace = new CodeNamespace {Imports = {new CodeNamespaceImport("System"), new CodeNamespaceImport("System.Collections.Generic"), new CodeNamespaceImport("System.Linq")}};
CodeNamespace typeNamespace = new CodeNamespace("MyTypeNamespace");
compileUnit.Namespaces.Add(importsNamespace);
compileUnit.Namespaces.Add(typeNamespace);
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.269
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
namespace MyTypeNamespace {
}
CodeSnippetCompileUnit 당신이 문자열로 입력 한 유형 정의를 컴파일 할 수 있습니다 생성합니다. 예를 들어 "public class TestClass {}"라는 문자열을 CodeSnippetCompileUnit의 값으로 사용할 수 있습니다. 에서 생성 된 파일에 네임 스페이스에서이 유형을 둘러싸 수있는 방법
public class TestClass {}
, 또는 수입 네임 스페이스 :
const string testClassCodeString = "public class TestClass {}";
CodeSnippetCompileUnit snippetCompileUnit = new CodeSnippetCompileUnit {Value = testClassCodeString};
CodeNamespace importsNamespace = new CodeNamespace {Imports = {new CodeNamespaceImport("System"), new CodeNamespaceImport("System.Collections.Generic"), new CodeNamespaceImport("System.Linq")}};
CodeNamespace typeNamespace = new CodeNamespace("MyTypeNamespace");
compileUnit.Namespaces.Add(importsNamespace);
compileUnit.Namespaces.Add(typeNamespace);
는 단지 포함 파일을 생성하십시오 CodeSnippetCompileUnit에 위와 동일한 코드를 사용하여 CodeSnippetCompileUnit?
, 그래서 실제 줄 바꿈이있을 거라고 생각 '{2}'보다 낫습니다. – svick
당신은 절대적으로 맞습니다. 이 경우 코드 샘플의 가독성이 향상됩니다. 귀하의 제안에 따라 업데이트되었습니다. – bozalina