ClearScript를 사용하여 일부 JavaScript를 컴파일하고 SQL에 저장하기 위해 직렬화하려고합니다. 그러나 Serializable이 아닌 것으로 표시되어 있는데 어떻게해야합니까?클리어 스크립트에서 컴파일 된 V8Script를 직렬화하려면 어떻게합니까?
V8ScriptEngine engine = new V8ScriptEngine();
V8Script compiled = engine.Compile("var a = 'test'");
using (MemoryStream ms = new MemoryStream())
{
new BinaryFormatter().Serialize(ms, compiled);
string compiledString = Convert.ToBase64String(ms.ToArray());
}
는이 오류 얻을 :
Additional information: Type 'Microsoft.ClearScript.V8.V8ScriptImpl' in Assembly 'ClearScriptV8-32, Version=5.4.6.0, Culture=neutral, PublicKeyToken=935d0c957da47c73' is not marked as serializable.
V8의 관점에서 볼 때 직렬화하는 것은 의미가 없습니다. V8 내부에 많은 상태가 필요하기 때문에 나중에 다시 사용할 수있는 것이 아닙니다. 어떤 개념이 C#에 노출되어 있는지 확실하지 않지만 그 내용은 후드에서 진행됩니다. – xaxxon
또한 특정 항목을 미리로드 한 후에 V8 격리/컨텍스트의 상태를 스냅 샷하는 방법이 있지만 C# 직렬화와 관련되지는 않습니다. 즉 V8 항목입니다. 그 (네이티브 API 용) 문서는 다음 위치에 있습니다. http://v8project.blogspot.com/2015/09/custom-startup-snapshots.html – xaxxon