2012-06-28 7 views
5

RavenDBは、シリアル化属性がなくても、任意のC#オブジェクトのパブリックプロパティ、プライベートプロパティ、およびプロテクトプロパティをすべてシリアル化できます。C#でパフォーマンスが低下することなくプライベートフィールドを読み込んで設定する方法は?

私はこれが反射して行うことができることを知っているが、それはいくつかのパフォーマンスの問題を持っているでしょう。これを達成する他のより効率的な方法がありますか? RavenDBはJSONにから任意のオブジェクトをシリアル化することができ、一方、内蔵.NETのシリアル化を使用する

は、注釈を必要とするか、いくつかのシリアル化インターフェースを実装します。

私はそれが使用する技術で、より興味を持って、特定のではないRavenDBよ。

+11

を参照してください。ただしないでください。彼らは理由のために私的です。 – Oded

+1

達成しようとしている目標は何ですか?これらの変数は、理由のためにプライベートです。なぜあなたはデザインを壊そうとしていますか? – ean5533

+0

これはどうやってRavenDBと他のソリューションが動作するのか理解するのに興味がありました。 – Olsenius

答えて

1

反射によってプロパティを設定することが遅すぎる場合は、実行時にそれらを設定し、動的メソッドを生成することができます。これは、Relection.Emitを使用するか、またはExpression<T>のコンパイルを作成することによって行うことができます。

0

は、インスピレーションを得るためNHibernateのに見て - 他の選択肢に加えて、それはまた、あなたのインターフェイスを使用して永続化するプロパティを表現する機会を与えてくれます。フードの下では、インターフェースを実装するラッパーオブジェクトは処理を変更します。

たとえばNHibernate Reflection Optimizer - what does it do?

関連する問題