[c#] تنفيذ c # رمز في وقت التشغيل من ملف الشفرة



Answers

نموذج التعليمات البرمجية للتنفيذ المترجمة على طريقة فئة الطيران:

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Net;
using Microsoft.CSharp;
using System.CodeDom.Compiler;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string source =
            @"
namespace Foo
{
    public class Bar
    {
        public void SayHello()
        {
            System.Console.WriteLine(""Hello World"");
        }
    }
}
            ";

             Dictionary<string, string> providerOptions = new Dictionary<string, string>
                {
                    {"CompilerVersion", "v3.5"}
                };
            CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);

            CompilerParameters compilerParams = new CompilerParameters
                {GenerateInMemory = true,
                 GenerateExecutable = false};

            CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source);

            if (results.Errors.Count != 0)
                throw new Exception("Mission failed!");

            object o = results.CompiledAssembly.CreateInstance("Foo.Bar");
            MethodInfo mi = o.GetType().GetMethod("SayHello");
            mi.Invoke(o, null);
        }
    }
}
Question

لدي تطبيق WPF C # يحتوي على زر.

تتم كتابة رمز نقرة الزر في ملف نصي منفصل سيتم وضعه في دليل وقت تشغيل التطبيقات.

أريد تنفيذ الشفرة الموضوعة في الملف النصي في نقرة الزر.

أي فكرة عن كيفية القيام بذلك؟




يبدو وكأنه شخص ما أنشأ مكتبة لهذا يسمى C # Eval .

تعديل: رابط محدث للإشارة إلى Archive.org كما يبدو أن الموقع الأصلي قد مات.




Links