Есть код:
using System.Dynamic;
class PersonObject : DynamicObject
{
Dictionary<string, object> members = new Dictionary<string, object>();
// установка свойства
public override bool TrySetMember(SetMemberBinder binder, object value)
{
members[binder.Name] = value;
return true;
}
// получение свойства
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
result = null;
if (members.ContainsKey(binder.Name))
{
result = members[binder.Name];
return true;
}
return false;
}
// вызов метода
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
dynamic method = members[binder.Name];
result = method((int)args[0]);
return result != null;
}
}
Тут binder используется для обращения по имени к свойствам и методам. Так вот вопрос: кроме этого, он для чего-то ещё предназначен? Если да, то для чего? Где binder'ы можно использовать ещё, кроме работы с динамическими объектами?