Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
CodeDOM poskytuje typy, které představují mnoho běžných typů elementů zdrojového kódu. Můžete navrhnout program, který sestaví model zdrojového kódu pomocí elementů CodeDOM k sestavení grafu objektu. Tento objektový graf lze vykreslit jako zdrojový kód pomocí generátoru kódu CodeDOM pro podporovaný programovací jazyk. CodeDOM lze také použít ke kompilaci zdrojového kódu do binárního sestavení.
Mezi běžné použití codeDOM patří:
- Generování šablonového kódu: generování kódu pro ASP.NET, klientské proxy webových služeb XML, průvodce kódem, návrháře nebo jiné mechanismy generování kódu.
- Dynamická kompilace: podpora kompilace kódu v jednom nebo několika jazycích.
Vytvoření grafu CodeDOM
Obor System.CodeDom názvů poskytuje třídy pro reprezentaci logické struktury zdrojového kódu nezávisle na syntaxi jazyka.
Struktura grafu CodeDOM
Struktura grafu CodeDOM je jako strom kontejnerů. Horní nebo kořenový kontejner každého kompilovatelného grafu CodeDOM je CodeCompileUnit. Každý prvek modelu zdrojového kódu musí být propojený s grafem prostřednictvím vlastnosti CodeObject v grafu.
Vytvoření modelu zdrojového kódu pro ukázkový program Hello World
Následující návod obsahuje příklad vytvoření grafu objektu CodeDOM, který představuje kód pro jednoduchou aplikaci Hello World. Úplný zdrojový kód pro tento příklad kódu najdete v System.CodeDom.Compiler.CodeDomProvider článku.
Vytvoření kompilační jednotky
CodeDOM definuje objekt s názvem CodeCompileUnit, který může odkazovat na objektový graf CodeDOM, který modeluje zdrojový kód ke kompilaci. A CodeCompileUnit obsahuje vlastnosti pro ukládání odkazů na atributy, obory názvů a sestavení.
Zprostředkovatelé CodeDom odvození od třídy CodeDomProvider obsahují metody, které zpracovávají objektový graf, na který odkazuje CodeCompileUnit.
Pokud chcete vytvořit objektový graf pro jednoduchou aplikaci, musíte sestavit model zdrojového kódu a odkazovat na něj z CodeCompileUnit.
Novou jednotku kompilace můžete vytvořit pomocí syntaxe demonstrované v tomto příkladu:
CodeCompileUnit^ compileUnit = gcnew CodeCompileUnit();
CodeCompileUnit compileUnit = new CodeCompileUnit();
Dim compileUnit As New CodeCompileUnit()
A CodeSnippetCompileUnit může obsahovat část zdrojového kódu, která už je v cílovém jazyce, ale nelze ji vykreslit do jiného jazyka.
Definujte obor názvů
Chcete-li definovat obor názvů, vytvořte CodeNamespace a přiřaďte název pro něj pomocí příslušného konstruktoru nebo nastavením jeho Name vlastnosti.
CodeNamespace^ samples = gcnew CodeNamespace("Samples");
CodeNamespace samples = new CodeNamespace("Samples");
Dim samples As New CodeNamespace("Samples")
Importovat jmenný prostor
Pokud chcete přidat direktivu importu pro obor názvů, přidejte CodeNamespaceImport, který označuje obor názvů k importování, do kolekce CodeNamespace.Imports.
Následující kód přidá import oboru názvů System do kolekce Imports objektu s názvem CodeNamespacesamples.
samples->Imports->Add(gcnew CodeNamespaceImport("System"));
samples.Imports.Add(new CodeNamespaceImport("System"));
samples.Imports.Add(new CodeNamespaceImport("System"))
Propojení prvků kódu do grafu objektů
Všechny prvky kódu, které tvoří graf CodeDOM, musí být propojeny s CodeCompileUnit tím, který je kořenovým prvkem stromu pomocí řady odkazů mezi prvky přímo odkazovanými z vlastností kořenového objektu grafu. Nastavte objekt na vlastnost objektu kontejneru pro navázání odkazu z objektu kontejneru.
Následující příkaz přidá samplesCodeNamespace do vlastnosti kolekce Namespaces kořenového CodeCompileUnit.
compileUnit->Namespaces->Add( samples );
compileUnit.Namespaces.Add( samples );
compileUnit.Namespaces.Add(samples)
Definování typu
Pokud chcete deklarovat třídu, strukturu, rozhraní nebo výčet pomocí CodeDOM, vytvořte novou CodeTypeDeclarationa přiřaďte jí název. Následující příklad ukazuje, jak pomocí přetížení konstruktoru nastavit vlastnost Name.
CodeTypeDeclaration^ class1 = gcnew CodeTypeDeclaration("Class1");
CodeTypeDeclaration class1 = new CodeTypeDeclaration("Class1");
Dim class1 As New CodeTypeDeclaration("Class1")
Chcete-li přidat typ do oboru názvů, přidejte CodeTypeDeclaration typ, který chcete přidat do oboru názvů do Types kolekce CodeNamespace.
Následující příklad ukazuje, jak přidat třídu pojmenovanou class1 do CodeNamespace s názvem samples:
samples->Types->Add(class1);
samples.Types.Add(class1);
samples.Types.Add(class1)
Přidání členů třídy do třídy
Obor System.CodeDom názvů poskytuje řadu prvků, které lze použít k reprezentaci členů třídy. Každý člen třídy lze přidat do Members kolekce .CodeTypeDeclaration
Definování metody vstupního bodu kódu pro spustitelný soubor
Pokud vytváříte kód pro spustitelný program, je nutné označit vstupní bod programu vytvořením představující CodeEntryPointMethod metodu, při které má spuštění programu začít.
Následující příklad ukazuje, jak definovat metodu vstupního bodu, která obsahuje CodeMethodInvokeExpression volání System.Console.WriteLine pro vypsání "Hello World!":
CodeEntryPointMethod^ start = gcnew CodeEntryPointMethod();
CodeMethodInvokeExpression^ cs1 = gcnew CodeMethodInvokeExpression(
gcnew CodeTypeReferenceExpression("System.Console"),
"WriteLine", gcnew CodePrimitiveExpression("Hello World!"));
start->Statements->Add(cs1);
CodeEntryPointMethod start = new CodeEntryPointMethod();
CodeMethodInvokeExpression cs1 = new CodeMethodInvokeExpression(
new CodeTypeReferenceExpression("System.Console"),
"WriteLine", new CodePrimitiveExpression("Hello World!"));
start.Statements.Add(cs1);
Dim start As New CodeEntryPointMethod()
Dim cs1 As New CodeMethodInvokeExpression( _
New CodeTypeReferenceExpression("System.Console"), _
"WriteLine", new CodePrimitiveExpression("Hello World!"))
start.Statements.Add(cs1)
Následující příkaz přidá metodu vstupního bodu pojmenovanou StartMembers do kolekce class1:
class1->Members->Add(start);
class1.Members.Add( start );
class1.Members.Add(start)
Nyní CodeCompileUnit, pojmenovaný compileUnit, obsahuje graf CodeDOM pro jednoduchý program Hello World. Informace o generování a kompilaci kódu z grafu CodeDOM najdete v tématu Generování zdrojového kódu a kompilace programu z grafu CodeDOM.
Další informace o vytváření grafu CodeDOM
CodeDOM podporuje mnoho běžných typů prvků kódu nalezených v programovacích jazycích, které podporují common language runtime. CodeDOM nebyl navržen tak, aby poskytoval prvky představující všechny možné funkce programovacího jazyka. Kód, který nelze snadno reprezentovat pomocí elementů CodeDOM, lze zapouzdřit v objektu CodeSnippetExpression, CodeSnippetStatement, CodeSnippetTypeMember nebo CodeSnippetCompileUnit. Fragmenty kódu ale nelze automaticky překládat do jiných jazyků pomocí CodeDOM.
Dokumentaci ke každému z typů CodeDOM najdete v referenční dokumentaci k System.CodeDom oboru názvů.
Rychlý graf k vyhledání elementu CodeDOM, který představuje konkrétní typ elementu kódu, naleznete v rychlé referenční dokumentaci CodeDOM.