Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
CodeDOM, birçok yaygın kaynak kod öğesi türünü temsil eden türler sağlar. Nesne grafı oluşturmak için CodeDOM öğelerini kullanarak kaynak kod modeli oluşturan bir program tasarlayabilirsiniz. Bu nesne grafı, desteklenen bir programlama dili için CodeDOM kod oluşturucu kullanılarak kaynak kod olarak işlenebilir. CodeDOM, kaynak kodunu ikili bir derlemeye dönüştürmek için de kullanılabilir.
CodeDOM için bazı yaygın kullanımlar şunlardır:
- Şablonlu kod oluşturma: ASP.NET, XML Web hizmetleri istemci proxy'leri, kod sihirbazları, tasarımcılar veya diğer kod yayma mekanizmaları için kod oluşturma.
- Dinamik derleme: Tek veya birden çok dilde kod derlemeyi destekleme.
CodeDOM grafiği oluşturma
Ad System.CodeDom alanı, dil söz dizimlerinden bağımsız olarak kaynak kodun mantıksal yapısını temsil eden sınıflar sağlar.
CodeDOM grafiğinin yapısı
CodeDOM grafiğinin yapısı kapsayıcı ağacı gibidir. Her derlenebilir CodeDOM grafiğinin en üstteki veya kök kapsayıcısı bir CodeCompileUnit'dir. Kaynak kod modelinizin her öğesi graftaki bir özelliği CodeObject aracılığıyla grafiğe bağlanmalıdır.
Örnek bir Merhaba Dünya programı için kaynak kod modeli oluşturma
Aşağıdaki izlenecek yol, basit bir Merhaba Dünya uygulamasının kodunu temsil eden codeDOM nesne grafiğinin nasıl derlendiğini gösteren bir örnek sağlar. Bu kod örneğinin tam kaynak kodu için makaleye System.CodeDom.Compiler.CodeDomProvider bakın.
Derleme birimi oluşturma
CodeDOM, derlenecek kaynak kodu modelleyen bir CodeDOM cisim grafiğine başvurabilen CodeCompileUnit adlı bir nesne tanımlar. , CodeCompileUnit özniteliklere, ad alanlarına ve derlemelere başvuruları depolamaya yönelik özelliklere sahiptir.
sınıfından CodeDomProvider türetilen CodeDom sağlayıcıları, CodeCompileUnit tarafından başvuruda bulunılan nesne grafını işleyen yöntemler içerir.
Basit bir uygulama için nesne grafı oluşturmak için kaynak kod modelini derlemeniz ve codeCompileUnit'ten buna başvurmanız gerekir.
Bu örnekte gösterildiği gibi söz dizimiyle yeni bir derleme birimi oluşturabilirsiniz:
CodeCompileUnit^ compileUnit = gcnew CodeCompileUnit();
CodeCompileUnit compileUnit = new CodeCompileUnit();
Dim compileUnit As New CodeCompileUnit()
, CodeSnippetCompileUnit kaynak kodun zaten hedef dilde olan ancak başka bir dilde işlenemeyen bir bölümünü içerebilir.
Ad alanı tanımlama
Bir ad alanı tanımlamak için, uygun oluşturucuyu kullanarak veya CodeNamespace özelliğini ayarlayarak bir Name oluşturun ve ona bir ad atayın.
CodeNamespace^ samples = gcnew CodeNamespace("Samples");
CodeNamespace samples = new CodeNamespace("Samples");
Dim samples As New CodeNamespace("Samples")
Ad alanını içeri aktarma
Ad alanına bir ad alanı içeri aktarma yönergesi eklemek için, içeri aktarılacak ad alanını gösteren bir CodeNamespaceImport'yi CodeNamespace.Imports koleksiyonuna ekleyin.
Aşağıdaki kod, System adlı Imports'nin CodeNamespace koleksiyonuna samples ad alanını ekler.
samples->Imports->Add(gcnew CodeNamespaceImport("System"));
samples.Imports.Add(new CodeNamespaceImport("System"));
samples.Imports.Add(new CodeNamespaceImport("System"))
Kod öğelerini nesne grafı içine bağlama
CodeDOM grafiğini oluşturan tüm kod öğeleri, grafiğin kök nesnesinin özelliklerinden doğrudan başvurulan öğeler arasında bir dizi referansla ağacın kök öğesi olan CodeCompileUnit'ye bağlanmalıdır. Kapsayıcı nesnesinden başvuru oluşturmak için bir nesneyi kapsayıcı nesnesinin özelliğine ayarlayın.
Aşağıdaki deyim, kök samples'in CodeNamespace koleksiyon özelliğine Namespaces ekler.
compileUnit->Namespaces->Add( samples );
compileUnit.Namespaces.Add( samples );
compileUnit.Namespaces.Add(samples)
Tür tanımlama
CodeDOM kullanarak bir sınıf, yapı, arabirim veya numaralandırma bildirmek için yeni CodeTypeDeclarationbir oluşturun ve buna bir ad atayın. Aşağıdaki örnek, özelliği ayarlamak için bir oluşturucu aşırı yüklemesi kullanarak bunu nasıl yapılacağını gösterir.
CodeTypeDeclaration^ class1 = gcnew CodeTypeDeclaration("Class1");
CodeTypeDeclaration class1 = new CodeTypeDeclaration("Class1");
Dim class1 As New CodeTypeDeclaration("Class1")
Ad alanına bir tür eklemek için, ad alanına eklenecek türü temsil eden bir CodeTypeDeclaration'yı TypesCodeNamespace koleksiyonuna ekleyin.
Aşağıdaki örnek, class1 adında bir sınıfın CodeNamespace adlı samples içine nasıl ekleneceğini göstermektedir.
samples->Types->Add(class1);
samples.Types.Add(class1);
samples.Types.Add(class1)
Sınıfa sınıf üyeleri ekleme
Ad alanı, System.CodeDom sınıf üyelerini temsil etmek için kullanılabilecek çeşitli öğeler sağlar. Her sınıf üyesi, bir Members koleksiyonunun CodeTypeDeclaration'ına eklenebilir.
Yürütülebilir dosya için kod giriş noktası yöntemi tanımlama
Yürütülebilir bir program için kod oluşturuyorsanız, program yürütmenin başlaması gereken yöntemi temsil eden bir CodeEntryPointMethod oluşturarak bir programın giriş noktasını belirtmeniz gerekir.
Aşağıdaki örnekte, "Merhaba Dünya!" yazdırmak için CodeMethodInvokeExpression çağıran System.Console.WriteLine içeren bir giriş noktası yönteminin nasıl tanımlanacağı gösterilmektedir.
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)
Aşağıdaki deyim, Start adlı giriş noktası yöntemini Members koleksiyonunun class1 kısmına ekler:
class1->Members->Add(start);
class1.Members.Add( start );
class1.Members.Add(start)
Şimdi CodeCompileUnit adlı compileUnit, basit bir Merhaba Dünya programı için CodeDOM grafiğini içerir. CodeDOM grafiğinden kod oluşturma ve derleme hakkında bilgi için bkz . CodeDOM Grafiğinden Kaynak Kodu Oluşturma ve Program Derleme.
CodeDOM grafı oluşturma hakkında daha fazla bilgi
CodeDOM, ortak dil çalışma zamanını destekleyen programlama dillerinde bulunan birçok yaygın kod öğesi türünü destekler. CodeDOM, tüm olası programlama dili özelliklerini temsil eden öğeler sağlamak için tasarlanmamıştır. CodeDOM öğeleriyle kolayca temsil edilemeyen kod, CodeSnippetExpressionCodeSnippetStatementveya CodeSnippetTypeMemberiçinde kapsüllenebilirCodeSnippetCompileUnit. Ancak kod parçacıkları CodeDOM tarafından otomatik olarak diğer dillere çevrilemez.
CodeDOM türlerinin her birine ilişkin belgeler için ad alanının başvuru belgelerine System.CodeDom bakın.
Belirli bir kod öğesi türünü temsil eden CodeDOM öğesini bulmak için bkz. CodeDOM Hızlı Referans.