creé algo como esto:
public class MyBag : DynamicObject
{
private readonly Dictionary<string, dynamic> _properties = new Dictionary<string, dynamic>(StringComparer.InvariantCultureIgnoreCase);
public override bool TryGetMember(GetMemberBinder binder, out dynamic result)
{
result = this._properties.ContainsKey(binder.Name) ? this._properties[ binder.Name ] : null;
return true;
}
public override bool TrySetMember(SetMemberBinder binder, dynamic value)
{
if(value == null)
{
if(_properties.ContainsKey(binder.Name))
_properties.Remove(binder.Name);
}
else
_properties[ binder.Name ] = value;
return true;
}
}
entonces usted puede utilizar de esta manera:
dynamic bag = new MyBag();
bag.Apples = 4;
bag.ApplesBrand = "some brand";
MessageBox.Show(string.Format("Apples: {0}, Brand: {1}, Non-Existing-Key: {2}", bag.Apples, bag.ApplesBrand, bag.JAJA));
nota que la entrada para "JAJA" nunca fue creado ... y todavía no lo hace lanzar una excepción, simplemente devuelve un valor nulo esperanza
esto ayuda a alguien
posible duplicado de [? ¿Cómo puedo crear propiedades dinámicas en C#] (http://stackoverflow.com/questions/947241/how-do-i-create-dynamic-properties -in-c) – nawfal