public StaticClass(string name_, StaticField[] fields_) { name = name_; fields = fields_; }
protected virtual void UpdateExistingStaticField(Transaction trans, StaticField existingField , IReflectField reflectField) { ObjectContainerBase stream = trans.Container(); object newValue = StaticReflectFieldValue(reflectField); if (existingField.value != null && newValue != null && existingField.value.GetType () == newValue.GetType()) { int id = stream.GetID(trans, existingField.value); if (id > 0) { if (existingField.value != newValue) { // This is the clue: // Bind the current static member to it's old database identity, // so constants and enums will work with '==' stream.Bind(trans, newValue, id); // This may produce unwanted side effects if the static field object // was modified in the current session. TODO:Add documentation case. stream.Refresh(trans, newValue, int.MaxValue); existingField.value = newValue; } return; } } if (newValue == null) { try { _fieldAccessor.Set(reflectField, null, existingField.value); } catch (Exception) { } // fail silently // TODO: why? return; } existingField.value = newValue; }
protected virtual StaticField FieldByName(StaticField[] fields, string fieldName) { for (int i = 0; i < fields.Length; i++) { StaticField field = fields[i]; if (fieldName.Equals(field.name)) { return field; } } return null; }
public _IFunction4_1760(ClassMetadata _enclosing, StaticField[] existingFields, Transaction trans) { this._enclosing = _enclosing; this.existingFields = existingFields; this.trans = trans; }