3
私有屬性我有使用反射來設置對象的屬性,e.g像這樣一些很老的代碼:設置類
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)對此有幫助(我不知道他們在內部使用什麼技術)?
- 還有其他的選擇嗎?
謝謝,我會看看它。 – M4N 2011-03-08 13:46:08