5

RavenDB 可以序列化任何给定 C# 对象上的所有公共、私有和受保护属性,即使没有任何序列化属性。

我知道这可以通过反射来完成,但这会产生一些性能问题。还有其他更有效的方法来实现这一目标吗?

要在 .NET 中使用内置序列化,需要注释或实现一些序列化接口,而 RavenDB 可以将任何给定对象序列化到 JSON 和从 JSON 序列化。

我对它使用的技术更感兴趣,而不是 RavenDB。

4

2 回答 2

1

如果通过反射设置属性太慢,您可以生成在运行时设置它们的动态方法。这可以使用Relection.Emit或通过创建编译一个Expression<T>.

于 2012-06-29T07:04:20.880 回答
0

向 NHibernate 寻求灵感 - 除了其他替代方案外,它还让您有机会使用接口来表达要保留的属性。在实现接口的底层包装器对象确实进行了更改处理。

参见例如NHibernate Reflection Optimizer - 它有什么作用?

于 2012-09-28T09:07:14.160 回答