Здравствуйте, Аноним, Вы писали:
А>Добрый день.
А>Как быть если я хочу воспользоваться удобствами EditableObject, но мне нужно реализовать свою логику в свойствах класса и к примеру дополнительно еще реализовать IDataErrorInfo? Т.е. допустим есть сложная валидация в сеттере свойства и установка IDataErrorInfo.Error при необходимости. Как быть с таким свойством? Как сделать чтобы IsDirty работало корректно при изменении такого свойства?
А>Спасибо за помощь.
ручками... все ручками.
хотя, есть один способ антоматизации труда...
абстрактные поля класса "упаковываются" в EditableValue<T> или EditableObjectHolder
рулится это аттрибутами InstanceType или GlobalInstanceType
посмотрите как реализованы EditableValue<T> и EditableObjectHolder
думаю, можно сделать что-то вроде:
public struct MyWrapper<T> : IEditable, IMemberwiseEditable
{
[GetValue, SetValue]
public T Value
{
get { return _current; }
set
{
// some additional code here
_current = value;
}
}
}
public abstract class MyEntity : EditableObject<MyEntity>
{
[InstanceType(typeof(MyWrapper<int>))]
public abstract int SimeValue { get; set; }
}