EditableObject - игнорировать внутренние изменения свойств
От: ili Россия  
Дата: 19.03.09 05:44
Оценка:
дано:
1) утечка памяти
Автор: ili
Дата: 18.03.09

2) бесконечная рекурсия
Автор: ili
Дата: 04.09.08


хочется, с одной стороны сохранить приемущества EditableObject с другой, избежать подобных неприятностей, сейчас делаю примерно так:

[MapField("CategoryId", "Category.Id")]
public abstract class Entity : EditableObject
{
    public abstract int      Id       { get; set; }

    private EditableValue<Category> _category = new EditableValue<Category>(EditableObject.CreateInstance<Category>());
    public Category Category 
    { 
        get
        {
            return _category.Value;
        }
        set
        {
            _category.Value = value;
            if (_category.IsDirty)
                OnPropertyChanged("Category");
        }
    }

    public override bool IsDirty { get { return base.IsDirty || _category.IsDirty; } }

    // ну и т.д. переопределения 
}

public abstract class Category : EditableObject
{
    public abstract int    Id   { get; set; }
    public abstract string Name { get; set; }
}


а хотелось бы так:

[MapField("CategoryId", "Category.Id")]
public abstract class Entity : EditableObject
{
    public abstract int      Id       { get; set; }

    [NoTrackingChanges]
    public abstract Category Category { get; set; }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.