The FieldData class has the ability to track the Dirty status of its property. In most cases this tracking works as expected.
Here's where it goes wrong for me:
Here's the code...
[Serializable()]
public class FieldData : IFieldData
{
private string _name;
private T _data;
private bool _isDirty;
...SNIP...
public virtual T Value
{
get
{
return _data;
}
set
{
_data = value;
_isDirty = true;
}
}
...SNIP...
public virtual bool IsSelfDirty
{
get { return IsDirty; }
}
public virtual bool IsDirty
{
get
{
ITrackStatus child = _data as ITrackStatus;
if (child != null)
{
return child.IsDirty;
}
else
{
return _isDirty;
}
}
}
}
I'd like to call IsSelfDirty but that delegates to IsDirty therefore serving no special purpose.
My suggestion...
Change FieldData.IsSelfDirty to return _isDirty field.
Does this break the semantics of IsSelfDirty?
If the field is a reference to a child object, then the child object must manage its own metastate. The parent (the FieldData object) can't manage the metastate of its child - it must delegate through to the child.
Thanks for the reply, Rocky.
My scenario is a little off the beaten track.
I shall mark my child object as Dirty to get the result I require.
Copyright (c) Marimer LLC