相关疑难解决方法(0)

DataContract和继承?

如何使用DataContract继承?代码如下工作?

[DataContract]
public class ConsoleData
{
    [DataMember]
    public String Description { get; set; }

}

[DataContract]
public class SomeData : ConsoleData
{

    [DataMember]
    public int Volume { get; set; }
    ......
Run Code Online (Sandbox Code Playgroud)

c# wcf

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

Json.NET是否缓存类型的序列化信息?

在.NET世界中,当谈到对象序列化时,它通常用于在运行时检查对象的字段和属性.对此作业使用反射通常很慢,并且在处理大量对象时是不合需要的.另一种方法是使用IL发射或构建表达树,这些表现树相对于反射提供显着的性能增益.而后者是处理序列化时最现代化的库.但是,在运行时构建和发送IL需要花费时间,并且只有在将此信息缓存并重用于相同类型的对象时才会回收投资.

当使用Json.NET时,我不清楚使用上述哪种方法,如果确实使用了后者,是否使用了缓存.

例如,当我这样做时:

JsonConvert.SerializeObject(new Foo { value = 1 });
Run Code Online (Sandbox Code Playgroud)

Json.NET是否构建了Foo的成员访问信息并缓存以便以后重用它?

c# serialization json expression-trees json.net

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

json.net不会从派生类序列化属性

我正在使用JSON.NET 6.0.1.当我使用该SerializeObject方法序列化派生类的对象时,它仅从基类序列化属性.这是代码片段:

string v = JsonConvert.SerializeObject(
                service, 
                Formatting.Indented, 
                new JsonSerializerSettings()
                {
                    TypeNameHandling = TypeNameHandling.All
                });
Run Code Online (Sandbox Code Playgroud)

基类:

[DataContract]
public abstract partial class DataEntity : IDataEntity, INotifyPropertyChanging, INotifyPropertyChanged
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

派生类:

[Table(Name = "dbo.mytable")]
public sealed class mytable : DataEntity
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

c# serialization json.net

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

标签 统计

c# ×3

json.net ×2

serialization ×2

expression-trees ×1

json ×1

wcf ×1