Considérez ce qui suit:Est-il possible de mettre en œuvre setters sur les propriétés des types anonymes
var o = new { Foo = "foo", Bar = "bar" };
Cette instance est en lecture seule, car le type anonyme ne met pas en œuvre setters comme une classe ne:
public class O
{
public String Foo { get; set; }
public String Bar { get; set; }
}
Est-il possible d '"ouvrir" l'instance anonyme et de modifier ses propriétés? De préférence en moins de caractères qu'il n'en faudrait pour créer une classe.
Je pense que cela peut être fait avec une méthode d'extension sur Object; o.SetProperty(o.Foo, "foo!");
, si vous ne pouvez pas implémenter des setters en ligne lors de la construction de l'objet.
L'affirmation sur la réflexion est invalide: ce qui suit fonctionne bien: 'var obj = new {id = 1, name =" abc "}; obj.GetType(). GetFields (BindingFlags.Instance | BindingFlags.NonPublic) .Single (f => f.FieldType == typeof (int)). SetValue (obj, 456); Console.WriteLine (obj.id); ' –