Я не использую IronPython, поэтому могу ошибаться, но вот что я бы предположил.
Учитывая, что Dynamic Language Runtime теперь полностью интегрирован в .NET 4.0, а IronPython основан на DLR, вы должны иметь возможность использовать стандартный способ .NET для создания объектов, которые обрабатывают установку / получение несуществующих членов / атрибутов / свойства. Это можно сделать с помощью интерфейса IDynamicMetaObjectProvider
. Более простым способом является наследование от DynamicObject
, которое обеспечивает реализацию по умолчанию для большинства методов и добавление только того метода, который вам нужен (см. члены DynamicObject ):
class MyObject : DynamicObject {
public override bool TryGetMember
(GetMemberBinder binder, out object result) {
string name = binder.Name;
// set the 'result' parameter to the result of the call
return // true to pretend that attribute called 'name' exists
}
public override bool TrySetMember
(SetMemberBinder binder, object value) {
// similar to 'TryGetMember'
}
}
В C # вы можете использовать этот объект благодаря dynamic
. IronPython должен относиться к нему так же!