相关疑难解决方法(0)

为什么SerializationInfo没有TryGetValue方法?

当实现ISerializable在C#中的接口,我们提供一个构造函数,需要一个SerializationInfo对象,然后用各种查询时GetInt32,GetObject为了填补对象的,我们正在尝试反序列化领域等方法.

实现此接口的一个主要原因,而不仅仅是使用[Serializable]属性,是为了向后兼容:如果我们在某个时刻向类中添加了新字段,我们可以捕获SerializationException序列化的旧版本的类,并处理他们以适当的方式.

我的问题如下:为什么我们必须将这些例外用于控制流程?如果我反序列化大量前一段时间保存的类,可能每个类中的每个缺失字段都会抛出异常,从而导致性能非常差.

为什么SerializationInfo类不提供TryGetValuefalse在名称字符串不存在时才会返回的方法?

c# serialization exception

16
推荐指数
1
解决办法
4770
查看次数

C#中类似JavaScript的动态属性

基本上我用C#等效于以下JavaScript语法:

var obj = {id: 1};
obj["prop1"] = 100;
obj["prop2"] = 200;
Run Code Online (Sandbox Code Playgroud)

是否可以动态地向C#对象添加属性并使用WebAPI控制器操作序列化为JSON?

我的C#对象:

public class MyObject
{
    public int Id { get; set; }
    public MyChildObject[] Chidren { get; set; }

    public int this[string prop]
    {
        get { return Chidren.Single(x => x.PropertyName == prop).Value; }
    }
}

public class MyChildObject
{
    public string PropertyName { get; set; }
    public int Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想回到客户端的是:

{
    id: 1,
    prop1: 100,
    prop2: 200
}
Run Code Online (Sandbox Code Playgroud)

此测试通过,但显然只是因为在运行时访问属性.但是,它们不是序列化的:

[TestMethod]
public void …
Run Code Online (Sandbox Code Playgroud)

c# serialization asp.net-web-api

2
推荐指数
1
解决办法
393
查看次数

如何将 List<ExpandoObject> 转换为 XML 字符串

我想使用 ExpandoObjects 列表作为 Telerik 报告的数据源,但 Telerik 报告目前似乎不支持此功能。他们确实支持将 XML 作为数据源,所以我试图将我的 ExpandoObjects 列表转换为 XML 字符串。

我已经看到(在Can I serialize an ExpandoObject in .NET 4?),可以通过 jsonFx 通过这个(VB.net 代码,而不是 c#)将单个 ExpandoObject 序列化为 XML 字符串:

dim XMLwriter As New JsonFx.Xml.XmlWriter
dim serializedExpando as string = XMLwriter.Write(obj)
Run Code Online (Sandbox Code Playgroud)

或其等效的 c# 代码:

JsonFx.Xml.XmlWriter XMLwriter = new JsonFx.Xml.XmlWriter();
String serializedExpando  = XMLwriter.Write(obj);
Run Code Online (Sandbox Code Playgroud)

如何将整个列表序列化为 XML 字符串?

c# xml telerik expandoobject dynamicobject

1
推荐指数
1
解决办法
2395
查看次数