2016-08-03 4 views
-1

でクラスのプロパティを取得するには:オプション.NET 4.6を使用して名前と値の辞書

私は与えられたクラスのプロパティの名前と値のコレクション辞書を取得するためのオプションを探しています。明白なオプションは反映です。しかし、.NET 2.0では、再選択の使用はパフォーマンス上重視され、推奨されませんでした。

私たちが.NET 4.6で持っているより良いオプションは何ですか?

この要件を実装しやすくするためのEntity Frameworkの機能はありますか?

アップデート1

私は差し込み印刷のスタイルテンプレートシステムを構築していると私は、プロパティの値を{} PropertyName意味のようなタグを交換しています。

一部のデータはEFエンティティクラスからのもので、一部はPOCOからのものです。

+0

これは、標準ADO.netでクエリがどのように機能するかに非常に近いものです。 Entity FrameworkのようなORMを使用する必要がありますか?なぜなら、EFの存在を回避しようとするような気がするからです。 – recursive

+1

あなたは解決しようとしている問題は何ですか? –

+0

実行時にプロパティのリストを取得する必要がある場合、それはreflection * *です。コンパイル時にリストを生成できるのであれば、それはより速くなります。しかし、実際には、リフレクションを使用することは大きなパフォーマンス上の問題ではありません。パフォーマンスの制約を定義しているわけではなく、誰でも高速な "十分な"ものかを知っています。 – Blorgbeard

答えて

1

こうして、あなたはリフレクションを使用することになります。

テンプレートシステムが読み込まれるときにモデルタイプの構造をキャッシュすることをお勧めします。これにより、テンプレート処理が高速化されます。しかし正直なところ、一度に何十万ものテンプレートを処理しているのでなければ、おそらくキャッシュからかなりのスピードアップを得ることはできません。

私が使用していることを強くお勧めする別のオプションは、RazorEngineです。これは、ASP.NETのカミソリテンプレートエンジンに基づいて、すでに構築されているテンプレートエンジンです。

+0

ありがとうございました。 https://github.com/Antaris/RazorEngineを参照していますか?大量のデータがレンダリングされるミッションクリティカルなWindowsサービスアプリケーションで使用するのに十分安定していますか? –

+0

私は推薦をすることができません。単にあなたにオプションを与えます。あなたは、あなたのプロジェクトにふさわしいかどうかを自分で決めなければなりません。 –

関連する問題