XmlSerializer '不支持编译 JScript/CSharp 脚本'
Posted
技术标签:
【中文标题】XmlSerializer \'不支持编译 JScript/CSharp 脚本\'【英文标题】:XmlSerializer 'Compiling JScript/CSharp scripts is not supported'XmlSerializer '不支持编译 JScript/CSharp 脚本' 【发布时间】:2021-11-25 23:21:46 【问题描述】:我打算序列化一个二维数组。按照建议here 将其提供为锯齿状数组,并从锯齿状数组中组合回来:
[XmlIgnore]
public Rational[,] tab;
public Rational[][] Data
get
Rational[][] dt = new Rational[tab.GetLength(0)][];
for (int i = 0; i < tab.GetLength(0); i++)
dt[i] = new Rational[tab.GetLength(1)];
for (int j = 0; j < tab.GetLength(1); j++)
dt[i][j] = tab[i, j];
return dt;
set
tab = new Rational[ value.Length, value[0].Length ];
for (int i = 0; i < tab.GetLength(0); i++)
for (int j = 0; j < tab.GetLength(1); j++)
tab[i, j] = value[i][j];
Rational
类型表示一个分数,可以是十进制 float 或 a/b 整数分数格式。我对Rational
做了单独序列化,这个类型没有问题。
我在构造 XmlSerializer 的地方得到了这个异常:
正好扔在这个地方:
XmlSerializer serializer = new XmlSerializer(typeof(SistemEcuatii));
这是包含序列化程序的代码
class SistemEcuatiiModel
string baza;
XmlSerializer serializer = new XmlSerializer(typeof(SistemEcuatii));
SistemEcuatii data;
public void WriteTo()
TextWriter writer = new StreamWriter(baza);
serializer.Serialize(writer, data);
writer.Close();
void LoadFromFile()
StreamReader streamer = new StreamReader(baza);
SistemEcuatii dt = (SistemEcuatii)serializer.Deserialize(streamer);
streamer.Close();
data = dt;
在互联网上搜索类似信息并没有提供一些有用的信息:net-core-3-1-soap-platform-not-supported-error-compiling-jscript-csharp-scriptDocs dot microsoft dot com 我尝试了github issues 的建议,但仍然无法正常工作
【问题讨论】:
【参考方案1】:github issues 的建议有效,不用担心
[XmlArrayItemAttribute(typeof(Rational[]))]
public Rational[][] Data
get
【讨论】:
以上是关于XmlSerializer '不支持编译 JScript/CSharp 脚本'的主要内容,如果未能解决你的问题,请参考以下文章
使用不带属性的 DataContractSerializer 或 XmlSerializer 删除所有命名空间
C# XmlSerializer DefaultAttribute 属性仍然为 nullables 序列化
C# 在 XmlSerializer 中使用结构而不创建单独的 xml 节点