private void SetVariablesOnElementRuntime(ElementRuntime elementRuntime)
{
object objectToSet = elementRuntime.mDirectObjectReference;
if (objectToSet == null)
{
objectToSet = elementRuntime;
}
// If the IElement
// that contains the
// elementRuntime has
// a base IElement, then
// the elementRuntime's NamedObjectSave
// may be defined in a base object, and the
// derived classes may provide a chain of overriden
// variables.
string name = elementRuntime.mAssociatedNamedObjectSave.InstanceName;
IElement element = this.AssociatedIElement;
List<NamedObjectSave> nosList = new List<NamedObjectSave>();
do
{
NamedObjectSave nos = element.GetNamedObject(name);
if (nos != null && (nos.DefinedByBase || nos == elementRuntime.mAssociatedNamedObjectSave))
{
nosList.Add(nos);
}
element = ObjectFinder.Self.GetIElement(element.BaseElement);
} while (element != null);
// Start with the most derived, so do a reverse for loop
for (int i = nosList.Count - 1; i > -1; i--)
{
SetVariablesForNamedObject(objectToSet, nosList[i]);
}
}