I am using CSLA 3.8.4
I have a backing variable:
Private Shared mFileIndex As PropertyInfo(Of FileIndex) = RegisterProperty(New PropertyInfo(Of FileIndex)("FileIndex"))
After I call GetProperty and get Nothing returned:
GetProperty(mFileIndex)
The FieldManager says that the backing variable exists even though I have not assigned a value to it:
FieldManager.FieldExists(mFileIndex)
Ideally, I would prefer that the FieldManager.FieldExists() method would return false in this case since all I did was ask for a null value.
Is there a way that I can tell the FieldManager to make a PropertyInfo field "Not Exist" or rollback to it's initialized state?
No, there's no provision for this.
When you call GetProperty and if the property value is not set it's initialized with the default value from the PropertyInfo (here Nothing).
Typically, when you create a new object - the field value is initialized with the default value when you call GetProperty the first time.
Your options would be to modiify the property getter like:
if (Not FieldManager.FieldExist(mFileIndex)) then
return Nothing
else
return GetProperty(mFileIndex)
end if
Allowing the field value to be reset has been in the wishlist for some time but unfortunately is not trivial to implement due to the N-level edit and how CancelEdit requires the original instance to restore (rollback) to state.
Copyright (c) Marimer LLC