リフレクションを使用してオブジェクトのプロパティを設定する非常に古いコードがあります。たとえば、次のようなものです。
var properties = obj.GetType().GetProperties(
BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
foreach (var property in properties)
{
property.SetValue(obj, lookup[property.Name]);
}
そのコードを置き換えて高速化することを考えていました。しかし、上記のコードではオブジェクトのプライベート プロパティを設定することもできるため、他にどのようなオプションがあるかわかりません。
質問:
- コンパイルされた式 (System.Linq.Expressions を使用) と生成されたコード (CodeDom / Microsoft.CSharp.CSharpCodeProvider を使用) を使用してプライベート プロパティを設定することはできませんか?
- Reflection.Emit を使用してそれは可能でしょうか?
- マッピング ライブラリ ( AutoMapper、ValueInjecter ) のいずれかがこれに役立ちますか (内部で使用しているテクノロジはわかりません)。
- 他のオプションはありますか?