diff --git a/Convention/[RScript] b/Convention/[RScript]
index 52e8e85..d3e21ca 160000
--- a/Convention/[RScript]
+++ b/Convention/[RScript]
@@ -1 +1 @@
-Subproject commit 52e8e855429c99ee7d5444cfcfa6434b2b657a97
+Subproject commit d3e21cad156f61ba46a61ec2008231de49ef946b
diff --git a/Convention/[Runtime]/Config.cs b/Convention/[Runtime]/Config.cs
index ec3d497..7189a84 100644
--- a/Convention/[Runtime]/Config.cs
+++ b/Convention/[Runtime]/Config.cs
@@ -1,12 +1,13 @@
using System;
+using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
-using System.Text;
+using System.Runtime.Serialization;
using System.Threading;
-using System.Threading.Tasks;
+using System.Xml;
namespace Convention
{
@@ -79,6 +80,39 @@ namespace Convention
}
+ ///
+ /// 序列化
+ ///
+ ///
+ ///
+ public static byte[] Serialize(T obj)
+ {
+ ArgumentNullException.ThrowIfNull(obj);
+
+ using var memoryStream = new MemoryStream();
+ DataContractSerializer ser = new DataContractSerializer(typeof(T));
+ ser.WriteObject(memoryStream, obj);
+ var data = memoryStream.ToArray();
+ return data;
+ }
+
+ ///
+ /// 反序列化
+ ///
+ ///
+ ///
+ ///
+ public static T Deserialize(byte[] data)
+ {
+ ArgumentNullException.ThrowIfNull(data);
+
+ using var memoryStream = new MemoryStream(data);
+ XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(memoryStream, new XmlDictionaryReaderQuotas());
+ DataContractSerializer ser = new DataContractSerializer(typeof(T));
+ var result = (T)ser.ReadObject(reader, true);
+ return result;
+ }
+
public static object SeekValue(object obj, string name, BindingFlags flags, out bool isSucceed)
{
Type type = obj.GetType();
@@ -409,5 +443,25 @@ namespace Convention
{
return DateTime.Now.ToString(format);
}
+
+ public class EnumerableClass : IEnumerable
+ {
+ private readonly IEnumerator ir;
+
+ public EnumerableClass(IEnumerator ir)
+ {
+ this.ir = ir;
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ return ir;
+ }
+ }
+
+ public static IEnumerable AsEnumerable(this IEnumerator ir)
+ {
+ return new EnumerableClass(ir);
+ }
}
}
diff --git a/[Test]/Program.cs b/[Test]/Program.cs
index e954a29..164b851 100644
--- a/[Test]/Program.cs
+++ b/[Test]/Program.cs
@@ -1,5 +1,8 @@
-using Convention.RScript;
+using Convention;
+using Convention.EasySave;
+using Convention.RScript;
using System;
+using System.IO;
public class Program
{
@@ -21,7 +24,9 @@ public class Program
typeof(ExpressionMath),
typeof(Test)
};
- var result = engine.Run(@"
+
+ /*
+ var result = engine.Compile(@"
int i= 2;
int count = 0;
label(test);
@@ -44,6 +49,8 @@ namespace(func1)
label(end);
", import);
- Console.WriteLine($"Script executed successfully. Result: {result["i"].data}");
+ */
+ //EasySave.Save("data", result, "F:\\test.json");
+ var result = engine.Run(EasySave.Load("data", "F:\\test.json"), import);
}
}
\ No newline at end of file