j'ai un code très ancien qui utilise la réflexion pour définir les propriétés des objets, par exemple quelque chose comme ceci:définition des propriétés privées des classes
var properties = obj.GetType().GetProperties(
BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
foreach (var property in properties)
{
property.SetValue(obj, lookup[property.Name]);
}
Je pensais à remplacer ce code pour le rendre plus rapide. Mais parce que le code ci-dessus permet également de définir les propriétés privées d'un objet, je ne suis pas sûr quelles autres options existent.
Questions:
- Ai-je raison, que les expressions compilées (en utilisant System.Linq.Expressions) et le code généré (en utilisant CodeDom/Microsoft.CSharp.CSharpCodeProvider) ne peuvent pas être utilisés pour définir les propriétés privées?
- Serait-ce possible en utilisant Reflection.Emit?
- Est-ce que l'une des bibliothèques de cartographie (AutoMapper, ValueInjecter) aiderait à cela (je ne sais pas quelle technologie ils utilisent en interne)?
- Existe-t-il d'autres options?
Merci, je vais avoir un coup d'oeil. – M4N