我有一个类,看起来像这样:

public class MyClass
{
    string _value;

    public static implicit operator MyClass (string value)
    {
        return new MyClass(value);
    }

    MyClass(string value)
    {
        // Do something...
        _value = value;
    }

    public override string ToString()
    {
         // Do something...
         return _value;
    }
}

因此,我可以使用这样的类:
MyClass a = "Hello!";

但是在Raven DB中,它将像
"SomeProperty": {}

因为它没有公共(public)属性(property)。这是完全没有用的。

为了解决这个问题,我将_value私有(private)成员改为一个公共(public)属性,如下所示:
public string Value { get; set; }

和Raven DB将存储
"SomeProperty": { "Value": "Hello!" }

它会反序列化。

但是我不想要这个公共(public)属性(property)。我能以某种方式使Raven DB像对字符串那样对类进行序列化和反序列化吗?喜欢:
"SomeProperty": "Hello!"

最佳答案

您可以编写一个JsonConverter并教RavenDB如何存储数据。
编写转换器后,将其注册在store.Conventions.CustomizeSerializer事件中。

关于c# - 如果我创建了隐式类型转换运算符,可以使Raven DB像字符串一样序列化一个对象吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10642184/

10-09 19:40