![]() |
|
معلومة ::: أجعل المستخدم عبر تطبيقك يخرج برامج أخري - CodeDom - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : معلومة ::: أجعل المستخدم عبر تطبيقك يخرج برامج أخري - CodeDom (/showthread.php?tid=5267) |
معلومة ::: أجعل المستخدم عبر تطبيقك يخرج برامج أخري - CodeDom - RaggiTech - 06-10-12 كاتب الموضوع : BADRMEDIA
ربما رأيت فى بعض الأنظمة التى تعتمد على قاعدة بيانات SQL أن مصممي النظام أتاحوا لمدراء النظام أن يكتبوا أوامر T- SQL إلي قاعدة البيانات مباشرة – ويقوم بأعمال على النظام كأنه مصمم للنظام وربما يقوم مصمم النظام بتصميم هذا الجزء له هو – حيث يذهب إلى متابعة نظامه فى شركة ما لكن هل فكرت أن يقوم بتصميم جزء فى النظام – يتيح للمستخدم تصميم برنامج خاص به مباشرة بحيث يكتب الكود ويتم تحويل هذا الكود لتطبيق !!!!!!!!! هذا هو الجديد يوجد فضاء اسم فى الدوت نت باسم CodeDom وهو المسئول عن ذلك لنري مثال حي الان =================================== افتح مشروع جديد Windows App فى قسم فضاء الاسم أعلن عن هذا كود : Imports System.CodeDomنحتاج إلى اضافة NameSpace إلى الكود المنشأ وفضاء الاسم CodeDom بالفعل يمكن ذلك كود : Dim NameSpace_inCreateApp As New CodeNamespace("BADRMEDIA")كما فى الكود أضفنا فضاء اسم باسم البرنامج الذى سننشأه الآن كما يمكننا أن نضيف أى فضاء اسم أخربكل سهولة عبر Import كود : NameSpace_inCreateApp.Imports.Add(New CodeNamespaceImport("System"))الكود يقول أنه سيتم اضافة فضاء اسم وهو System للكود الذى سيطبق معلومة ::: أجعل المستخدم عبر تطبيقك يخرج برامج أخري - CodeDom - RaggiTech - 06-10-12 ماذا لو أردت أن تضيف للتطبيق الذى سينشأ - كلاس Class هل فكرت فى ذلك ؟؟؟ كود : Dim Class_inCreateApp As New CodeTypeDeclaration("BADRMEDIA_Class")ولكن لم يعرف البرنامج بعد أنه Class لكن فى السطر الثاني أخبرناه أنه Class كود : Class_inCreateApp.IsClass = Trueوبنفس الطريقة يمكن إنشاء IsInterface وغيرها من الأنواع فى السطر الثاثل عرفنا نوع التعريف هل هو Static أم Public وفي النهاية أضفنا الكلاس للمشروع الجديد كود : NameSpace_inCreateApp.Types.Add(Class_inCreateApp)معلومة ::: أجعل المستخدم عبر تطبيقك يخرج برامج أخري - CodeDom - RaggiTech - 06-10-12 جاء دور أن نضيف Method للتطبيق المنشأ كود : Dim Method_inCreateApp As New CodeEntryPointMethod()قمنا بانشاء Method باسم Method_inCreateApp ولو لاحظنا فى فى نوعه سنجد أنه CodeEntryPointMethod وهذا يعنى أنه يعمل عمل الاجراء Main منطقة دخول البرنامج ثم حددنا Attributes كما في السطر الثاني فى التطبيق نحن نضيف TextBox وزر Button في السطر الثالث كود : Method_inCreateApp.Statements.Add(New CodeSnippetStatement(TextBox1.Textهذا أهم سطر فى الفكرة وهو أننا أخذنا الكود المكتوب في مربع النص TextBox بحيث ننفذه وفى السطر الأخير قمنا بشئ اخر وهو أننا أضفنا Method_inCreateApp إلى الكلاس وليس الى فضاء الاسم لأن Method جزء من Class ثم الكلاس جزء من فضاء الاسم كود : Class_inCreateApp.Members.Add(Method_inCreateApp)معلومة ::: أجعل المستخدم عبر تطبيقك يخرج برامج أخري - CodeDom - RaggiTech - 06-10-12 الآن سنقوم بعمل ترجمة للكود وتطبيقه كود : Dim Compile_inCreateApp As New CodeCompileUnitفي أول الكود قمنا بانشاء CodeCompileUnit كود : Dim Compile_inCreateApp As New CodeCompileUnitثم نضيف ذلك إلى فضاء الاسم كود : Compile_inCreateApp.Namespaces.Add(NameSpace_inCreateAppُثم أنشأنا عنصر نرسل له خصائص العنصر Compiler كود : Dim CompilingParams As New Compiler.CompilerParameters()ثم أرسلنا ثلاث خصائص كود : CompilingParams.GenerateInMemory = Falseالخاصية الأول أعطت الصلاحية للكومبيلر بعمل ال Generation فى الذاكرة والخاصية الثانية اعطت له الصلاحية بعمل ملف تنفيذى والثالثة أعطت مسار انشاء الملف واسمه =================== أنشانا Complier كود : Dim Compiler As ICodeCompiler = CodeProvider.CreateCompilerثم سنمرر للكائن CompilerResults الخواص و Compiler كود : Dim CompilerResult As CompilerResults = Compiler.CompileAssemblyFromDom(CompilingParams, Compile_inCreateApp)معلومة ::: أجعل المستخدم عبر تطبيقك يخرج برامج أخري - CodeDom - RaggiTech - 06-10-12 لقد قمنا فعلاً بالترجمة للمشروع - لكن كيف نصطاد الخطأ كود : If CompilerResult Is DBNull.Value Or CompilerResult.Errors.Count > 0 Thenالكود واضح وما يحتاج شرح معلومة ::: أجعل المستخدم عبر تطبيقك يخرج برامج أخري - CodeDom - RaggiTech - 06-10-12 بالفعل أنهينا شرح الاجراء وسيكون شكله فى النهاية كود : Public Sub CreateApp()وتحت حدث الزر Button نكتب هذا الكود كود : Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Clickبالنسبة لكود المستخدم كمثال : اكتب فى مربع النص هذا الكود كود : console.writeline("www.vb4arab.com")معلومة ::: أجعل المستخدم عبر تطبيقك يخرج برامج أخري - CodeDom - RaggiTech - 06-10-12 حمل مثال مايكروسوفت http://msdn2.microsoft.com/en-us/lib...1t(VS.80).aspx |