更改BSON中的类型信息

时间:2019-04-02 14:40:09

标签: c# json.net

因此,我有一些BSON数据存储在包含.NET类型信息的数据库记录中(这是必需的,因为某些属性是接口,因此需要包含具体类型)。一切都很好,但是现在我不得不重新排列一些代码,以使一些类移到了不同​​的命名空间中。因此,例如:

class MyClass
{
     public IFoo { get; set; }
}

最初通过IFoo的具体实现进行了序列化:

MyNameSpace.Foo

但是现在:

SomeOtherNameSpace.Foo

Foo两种方式都是相同的(尽管它可能具有一些嵌套属性,但它们也已更改)。

这对于新数据不是问题,但是我需要找到一种转换旧数据的方法。问题是我目前无法反序列化旧数据,因为它已经移动了,所以找不到相关的类。所以我想知道是否有一种方法可以更改保存在BSON中的类型信息而无需反序列化它?我在想,即使我可以将BSON转换为JSON,也可以使用一些简单的字符串替换来编辑JSON(例如,将MyNameSpace替换为SomeOtherNameSpace),然后再转换回BSON并更新数据库记录。 JSON.Net有可能吗?我可以接受BSON,转换为JSON(不需要类反序列化),编辑JSON,然后再转换回BSON(使用现在更新的类型信息)吗?

1 个答案:

答案 0 :(得分:0)

要回答我自己的问题,这似乎是一种可能的解决方案:

// I have some field
{
    xtype: 'textfield',
    maskRe: /[0-9.]/,
    vtype: 'imei',
    fieldLabel: 'IMEI:',
    name: 'imei',
    flex: 1
}

// validation for textfield on keypress
    imei: function (v) {
        return v.length < 16;
    },
    imeiText: 'length more then 15 symbols is not recommended'

// validation on save button click
validateForm: function (form) {
    if (!form.isValid()) {
        // don't save form
    }// can't save form because imei is not valid
}

这有点混乱,但是除非有一种更干净的方法来解决这个问题,否则它可能会紧要关头?