Здравствуйте, Блудов Павел, Вы писали:
БП>Здравствуйте, Nonick, Вы писали:
N>>Хотелось бы знать мнение Игоря, Павла а также всех заинтересованных по поводу того, не закинуть ли такую фичу в BLT. Спасибо.
БП>А можно подробней, откуда такая надобность появилась?
БП>Вроде как GetValue+SetValue в .net не считается за comme il faut?
БП>Наверное старый добрый COM interop?
Нет, все проще.
Приведу пример, из него, думаю, будет понятно
class EntityBase{
[InstanceType(typeof(ValueBox<int>))]
public abstract int IntProp { get; set; }
}
struct ValueBox<T> {
private T _value;
[GetValue]
T GetValue() { return _value; }
//или так T GetValue(EntityBase parent) { ... например LazyLoad, но нужен parent для доступа к сервису}
//или так T GetValue(EntityBase parent, PropertyInfo pi) { }
[SetValue]
SetValue(T value) { _value = value; }
//или так SetValue(T value, EntityBase parent) { }
//или так SetValue(T value, EntityBase parent, PropertyInfo pi) { ... например Undo, но нужен parent для доступа к сервису}
}
Соответственно, та версия функции, которую Builder обнаружил, она и будет вызвана. Причем, это происходит после стандартного поиска (полей, свойств), который реализован сейчас.