小编Ext*_*xta的帖子

如何使用Newtonsoft.Json将对象序列化为带有类型信息的json?

当我序列化某些类型的对象时,我希望在JSON中有一个类型名称的属性.我写了一个转换器:

public class TypeInfoConverter : JsonConverter {
    private readonly IEnumerable<Type> _types;

    public TypeInfoConverter(IEnumerable<Type> types) {
        Contract.Requires(types != null);

        _types = types;
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) {
        var jObject = JObject.FromObject(value, serializer);
        jObject.AddFirst(new JProperty("Type", value.GetType().Name));
        jObject.WriteTo(writer);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) {
        return serializer.Deserialize(reader, objectType);
    }

    public override bool CanConvert(Type objectType) {
        return _types.Any(t => t.IsAssignableFrom(objectType));
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试序列化对象时,我在这里有一个无限递归: var jObject = JObject.FromObject(value, serializer);很明显,因为我使用了与该转换器配置的JsonSerializer相同的实例.

如何防止使用此转换器,但我想使用为此序列化器配置的其他转换器?

我要序列化的类型:

public …
Run Code Online (Sandbox Code Playgroud)

c# serialization json.net

29
推荐指数
2
解决办法
4万
查看次数

如何防止在Razor(独立)中转义html?

我有一个带有属性Content的Model,其中包含HTML字符串.

var model = new { Content = ... }
Razor.Parse(templateBody, model)
Run Code Online (Sandbox Code Playgroud)

如何使用独立Razor渲染此字符串.

我试过了:

@(new HtmlString(Model.Content))
Run Code Online (Sandbox Code Playgroud)

并且

@(HttpUtility.HtmlDecode(Model.Content))
Run Code Online (Sandbox Code Playgroud)

Model.Content渲染始终是HTML转义的.

.net html asp.net-mvc razor

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

SQL Server 2012 AlwaysOn同步副本实际上不是同步读取

我正在尝试在将数据写入主副本之后从同步辅助副本中读取数据.但我的数据不存在于二级.

在辅助数据上出现数据之前,存在大约100-500ms的延迟.

是否可以使辅助副本与读取查询真正同步?

synchronization scalability sql-server-2012 alwayson

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