我正在研究 Sharepoint 中的沙盒解决方案,因此重要的限制(关于这个问题)是使用 .net 3.5 并且不允许反射。
例 1
如果我尝试将 JSON 字符串反序列化为像这样的简单类,它可以正常工作:
JSON字符串
{"field":"Picture1","url":"whatever"}
C#类
public class PictureSetting
{
public string field { get; set; }
public string url { get; set; }
}
例 2
但是如果我尝试反序列化一个更复杂的字符串,我会得到一个错误:
JSON字符串
{
"Rows": [
{
"Columns": [
{
"Width": "100"
}
]
}
]
}
C# 类
internal class PageStructure
{
public List<StructureElement> Rows { get; set; }
public PageStructure()
{
Rows = new List<StructureElement>();
}
}
internal class StructureElement
{
public List<BlockAssigment> Columns { get; set; }
public StructureElement()
{
Columns = new List<BlockAssigment>();
}
}
internal class BlockAssigment
{
public string Width { get; set; }
}
错误
请求“System.Security.Permissions.ReflectionPermission、mscorlib、Version=2.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089”类型的权限失败。
*反序列化
我用于反序列化两个示例的代码只是标准的.net:
var serializer = new JavaScriptSerializer();
var obj = serializer.Deserialize<PageStructure>("jsonstring");
因此,对于第一个示例,.net 似乎没有使用反射,因为它有效。所以问题是:
有没有一种方法可以反序列化第二个示例而无需.net 在内部使用反射?
修改 JSON 字符串和 C# 类都没有问题,我只需要以某种方式保留结构(行包括列的基础对象)。