ฉันได้เขียนแพ็คเกจSharpByte.Dynamicเพื่อลดความซับซ้อนของงานในการคอมไพล์และรันโค้ดแบบไดนามิก รหัสสามารถเรียกบนวัตถุบริบทใด ๆ โดยใช้วิธีการขยายตามรายละเอียดเพิ่มเติมที่นี่
ตัวอย่างเช่น,
someObject.Evaluate<int>("6 / {{{0}}}", 3))
ผลตอบแทน 3;
someObject.Evaluate("this.ToString()"))
ส่งกลับการแสดงสตริงของวัตถุบริบท
someObject.Execute(@
"Console.WriteLine(""Hello, world!"");
Console.WriteLine(""This demonstrates running a simple script"");
");
เรียกใช้คำสั่งเหล่านั้นเป็นสคริปต์ ฯลฯ
ไฟล์ปฏิบัติการสามารถรับได้อย่างง่ายดายโดยใช้วิธีการจากโรงงานดังที่เห็นในตัวอย่างที่นี่ - สิ่งที่คุณต้องมีคือซอร์สโค้ดและรายการพารามิเตอร์ที่มีชื่อที่คาดไว้ (โทเค็นถูกฝังโดยใช้สัญลักษณ์สามวงเล็บเช่น {{{0}} } เพื่อหลีกเลี่ยงการชนกับ string.Format () เช่นเดียวกับไวยากรณ์ที่คล้ายกับ Handlebars):
IExecutable executable = ExecutableFactory.Default.GetExecutable(executableType, sourceCode, parameterNames, addedNamespaces);
อ็อบเจ็กต์ที่เรียกใช้งานได้ (สคริปต์หรือนิพจน์) แต่ละตัวเป็นเธรดที่ปลอดภัยสามารถจัดเก็บและใช้ซ้ำได้รองรับการบันทึกจากภายในสคริปต์เก็บข้อมูลเวลาและข้อยกเว้นสุดท้ายหากพบเป็นต้นนอกจากนี้ยังมีวิธีคัดลอก () ที่คอมไพล์ในแต่ละรายการเพื่อให้ การสร้างสำเนาราคาถูกกล่าวคือการใช้อ็อบเจ็กต์ปฏิบัติการที่คอมไพล์จากสคริปต์หรือนิพจน์เป็นเทมเพลตสำหรับสร้างอื่น ๆ
ค่าใช้จ่ายในการเรียกใช้สคริปต์หรือคำสั่งที่คอมไพล์ไว้แล้วค่อนข้างต่ำโดยใช้ฮาร์ดแวร์ที่เรียบง่ายไม่เกินหนึ่งไมโครวินาทีและสคริปต์และนิพจน์ที่คอมไพล์แล้วจะถูกแคชเพื่อนำมาใช้ใหม่