private void RenderSubObject(TreeGridNode parentNode, object parentObj, IReflectField field) { try { TreeGridNode objectNode = new TreeGridNode(); parentNode.Nodes.Add(objectNode); object value = field.Get(parentObj); if (value != null) { container.Ext().Activate(value, 1); } objectNode.Tag = value; IType fieldType = ResolveFieldType(field); objectNode.Cells[0].Value = AppendIDTo(field.GetName(), GetLocalID(value), fieldType); objectNode.Cells[1].Value = value != null?value.ToString() : BusinessConstants.DB4OBJECTS_NULL; SetFieldType(objectNode, fieldType); if (parentNode.Tag is DictionaryEntry && field.GetName() == BusinessConstants.DB4OBJECTS_KEY) { objectNode.Cells[1].ReadOnly = true; } else if (parentNode.Tag is DictionaryEntry && field.GetName() == BusinessConstants.DB4OBJECTS_VALUE) { objectNode.Cells[1].ReadOnly = checkReadonlyStatus(); } else if (field.Get(parentObj) == null) { objectNode.Cells[1].ReadOnly = true; } else { objectNode.Cells[1].ReadOnly = true; } objectNode.ImageIndex = 0; //class if (value != null) { //container = Db4oClient.Client; //container.Ext().Activate(value, 2); TreeGridNode treenodeDummyChildNode = new TreeGridNode(); objectNode.Nodes.Add(treenodeDummyChildNode); treenodeDummyChildNode.Cells[0].Value = BusinessConstants.DB4OBJECTS_DUMMY; } } catch (Exception oEx) { LoggingHelper.HandleException(oEx); } }
private object GetField(object obj, string fieldName) { IReflectClass clazz = Reflector().ForObject(obj); IReflectField field = clazz.GetDeclaredField(fieldName); return(field.Get(obj)); }
private void CopyFieldValuesAcross(object src, object dest, IReflectClass claxx, IReplicationProviderInside sourceProvider, IReplicationProviderInside targetProvider ) { if (dest == null) { throw new InvalidOperationException("Dest cannot be null: src=" + src + ", class=" + claxx + ", source=" + sourceProvider.GetName() + ", target=" + targetProvider .GetName()); } IEnumerator fields = FieldIterators.PersistentFields(claxx); while (fields.MoveNext()) { IReflectField field = (IReflectField)fields.Current; object value = field.Get(src); field.Set(dest, FindCounterpart(value, sourceProvider, targetProvider)); } IReflectClass superclass = claxx.GetSuperclass(); if (superclass == null) { return; } CopyFieldValuesAcross(src, dest, superclass, sourceProvider, targetProvider); }
private void KillEverything() { bool empty = true; try { IQuery query = client.Query(); IEnumerable allObjects = query.Execute(); foreach (Object item in allObjects) { GenericObject dbObject = (GenericObject)item; if (dbObject.GetGenericClass().GetName().ToLower().Contains("player")) { IReflectField screenNameField = dbObject.GetGenericClass().GetDeclaredField("<ScreenName>k__BackingField"); Console.WriteLine("Killing: " + screenNameField.Get(dbObject).ToString()); client.Delete(dbObject); empty = false; } } client.Commit(); } catch (Exception e) { Console.WriteLine(e.Message); } if (empty) { Console.WriteLine("The list of players is already empty."); } }
public List <Player> GetAllPlayers() { List <Player> players = new List <Player>(); try { IQuery query = client.Query(); IEnumerable allObjects = query.Execute(); foreach (Object item in allObjects) { GenericObject dbObject = (GenericObject)item; if (dbObject.GetGenericClass().GetName().ToLower().Contains("player")) { IReflectField screenNameField = dbObject.GetGenericClass().GetDeclaredField("<ScreenName>k__BackingField"); players.Add(new Player(screenNameField.Get(dbObject).ToString())); } } } catch (Exception e) { Console.WriteLine(e.Message); } return(players); }
public void SaveValues(object targetObject, string attribName, object newValue, int offset, IType type) { try { IReflectClass rclass = DataLayerCommon.ReflectClassFor(targetObject); IReflectField rfield = DataLayerCommon.GetDeclaredFieldInHeirarchy(rclass, attribName); if (rfield != null && !(rfield is GenericVirtualField)) { if (type.IsArray || type.IsCollection) { IList list = rfield.Get(targetObject) as IList; if (null != list) { list[offset] = newValue; rfield.Set(targetObject, list); } } else { SetObject(rfield, targetObject, newValue); } } } catch (Exception oEx) { objectContainer.Rollback(); LoggingHelper.HandleException(oEx); } }
public void TestDynamicMethodsOnSecurityCriticalTypes() { FastNetReflector reflector = new FastNetReflector(); IReflectField sizeField = reflector.ForClass(typeof(List <NotAccessible>)).GetDeclaredField("_size"); List <NotAccessible> obj = new List <NotAccessible>(); sizeField.Set(obj, 42); Assert.AreEqual(42, sizeField.Get(obj)); }
public void TestNonAccessibleGenericTypeParamenterBugInReflectionEmit() { FastNetReflector reflector = new FastNetReflector(); IReflectField sizeField = reflector.ForClass(typeof(GenericClass <NotAccessible>)).GetDeclaredField("_size"); GenericClass <NotAccessible> obj = new GenericClass <NotAccessible>(); sizeField.Set(obj, 42); Assert.AreEqual(42, sizeField.Get(obj)); }
public object getClass(string attribName, object subObject, string fullattribName) { try { IReflectClass rclass = DataLayerCommon.ReflectClassFor(subObject); if (rclass != null) { IReflectField rfield = DataLayerCommon.GetDeclaredFieldInHeirarchy(rclass, attribName); if (rfield != null) { string fieldType = rfield.GetFieldType().GetName(); IType type = Db4oClient.TypeResolver.Resolve(fieldType); if (m_hashRowContent == null) { m_hashRowContent = new Hashtable(); } if (!type.IsEditable) { if (!rfield.GetFieldType().IsCollection() && !rfield.GetFieldType().IsArray()) { object getObj = rfield.Get(subObject); if (getObj == null) { m_hashRowContent.Add(fullattribName, BusinessConstants.DB4OBJECTS_NULL); } return(getObj); } } else { object objValue = rfield.Get(subObject); m_hashRowContent.Add(fullattribName, objValue); } } } } catch (Exception oEx) { LoggingHelper.HandleException(oEx); } return(null); }
public virtual object Get(IReflectField field, object onObject) { try { return(field.Get(onObject)); } catch (Db4oException) { return(null); } }
private void TraverseFields(object @object, IReflectClass claxx) { IEnumerator fields = FieldIterators.PersistentFields(claxx); while (fields.MoveNext()) { IReflectField field = (IReflectField)fields.Current; object value = field.Get(@object); QueueUpForTraversing(value); } }
public virtual object Get(IReflectField field, object onObject) { try { return field.Get(onObject); } catch (Db4oException) { return null; } }
public object Apply(object current) { IReflectField field = (IReflectField)current; try { return(field.Get(obj)); } catch (Exception e) { throw new Db4oException(e); } }
public void CreatePrimitiveNode(IReflectField field, long id, IType type) { try { object currObj = Db4oClient.Client.Ext().GetByID(id); object value = field.Get(currObj); var treeGridViewRenderer = FillValuesInTreeGridViewRenderer(field, type, value); listTreeGridViewRenderers.Add(treeGridViewRenderer); } catch (Exception oEx) { LoggingHelper.HandleException(oEx); } }
private void RenderCollection(long id, IReflectField field) { container = Db4oClient.Client; object currObj = container.Ext().GetByID(id); object value = field.Get(currObj); if (value != null) { container.Ext().Activate(value, 2); ICollection coll = (ICollection)value; CreateCollectionNode(field, value, coll.Count); } else { CreateCollectionNode(field, value, 0); } }
private static object SetField(string attribName, object subObject, object newValue) { try { IReflectClass rclass = DataLayerCommon.ReflectClassFor(subObject); if (rclass == null) { return(null); } IReflectField rfield = DataLayerCommon.GetDeclaredFieldInHeirarchy(rclass, attribName); if (rfield == null) { return(null); } if (rfield is GenericVirtualField || rfield.IsStatic()) { return(null); } IType fieldType = Db4oClient.TypeResolver.Resolve(rfield.GetFieldType()); if (!fieldType.IsEditable) { if (!fieldType.IsCollection && !fieldType.IsArray) { subObject = rfield.Get(subObject); Db4oClient.Client.Ext().Activate(subObject, 2); return(subObject); } } else if (subObject != null) { rfield.Set(subObject, fieldType.Cast(newValue)); return(subObject); } return(null); } catch (Exception oEx) { LoggingHelper.HandleException(oEx); return(null); } }
private void RenderCollection(TreeGridNode rootNode, object currObj, IReflectField field) { container = Db4oClient.Client; object value = field.Get(currObj); if (value != null) { container.Ext().Activate(value, 2); ICollection coll = (ICollection)value; CreateCollectionNode(field, value, ref rootNode, coll.Count.ToString()); } else { CreateCollectionNode(field, value, ref rootNode, "0"); } }
private void RenderArray(TreeGridNode rootNode, object currObj, IReflectField field) { container = Db4oClient.Client; object obj = field.Get(currObj); if (obj != null) { container.Ext().Activate(obj, 2); int length = container.Ext().Reflector().Array().GetLength(obj); CreateCollectionNode(field, obj, ref rootNode, length.ToString()); } else { CreateCollectionNode(field, obj, ref rootNode, "0"); } }
private void RenderArray(long id, IReflectField field) { object currObj = Db4oClient.Client.Ext().GetByID(id); Db4oClient.Client.Ext().Activate(currObj, 2); object obj = field.Get(currObj); if (obj != null) { container.Ext().Activate(obj, 2); int length = container.Ext().Reflector().Array().GetLength(obj); CreateCollectionNode(field, obj, length); } else { CreateCollectionNode(field, obj, 0); } }
public void CreatePrimitiveNode(IReflectField field, object currObj, IType type) { try { object value = field.Get(currObj); var treeGridViewRenderer = FillValuesInTreeGridViewRenderer(field, type, value); if (currObj is IDictionary) { treeGridViewRenderer.ReadOnlyStatus = field.GetName() != BusinessConstants.DB4OBJECTS_VALUE1; treeGridViewRenderer.HasSubNode = true; treeGridViewRenderer.SubObject = currObj; } listTreeGridViewRenderers.Add(treeGridViewRenderer); } catch (Exception oEx) { LoggingHelper.HandleException(oEx); } }
private void CopyFieldValuesAcross(object src, object dest, IReflectClass claxx, IReplicationProviderInside sourceProvider, IReplicationProviderInside targetProvider ) { IEnumerator fields = FieldIterators.PersistentFields(claxx); while (fields.MoveNext()) { IReflectField field = (IReflectField)fields.Current; object value = field.Get(src); field.Set(dest, FindCounterpart(value, sourceProvider, targetProvider)); } IReflectClass superclass = claxx.GetSuperclass(); if (superclass == null) { return; } CopyFieldValuesAcross(src, dest, superclass, sourceProvider, targetProvider); }
/// <exception cref="System.Exception"></exception> protected virtual void AssertNullItem(object obj) { IReflectClass claxx = Reflector().ForObject(obj); IReflectField[] fields = claxx.GetDeclaredFields(); for (int i = 0; i < fields.Length; ++i) { IReflectField field = fields[i]; if (field.IsStatic() || field.IsTransient()) { continue; } IReflectClass type = field.GetFieldType(); if (Container().ClassMetadataForReflectClass(type).IsValueType()) { continue; } object value = field.Get(obj); Assert.IsNull(value); } }
public static void SaveDictionary(object targetObject, string attribName, object newValue, object key) { try { IReflectClass rclass = DataLayerCommon.ReflectClassFor(targetObject); if (rclass != null) { IReflectField rfield = DataLayerCommon.GetDeclaredFieldInHeirarchy(rclass, attribName); if (rfield != null) { if (!(rfield is GenericVirtualField || rfield.IsStatic())) { object obj = rfield.Get(targetObject); ICollection col = (ICollection)obj; if (col is Hashtable) { Hashtable hash = (Hashtable)col; hash.Remove(key); hash.Add(key, newValue); rfield.Set(targetObject, hash); } else if (col is IDictionary) { IDictionary dict = (IDictionary)col; dict.Remove(key); dict.Add(key, newValue); rfield.Set(targetObject, dict); } } } } } catch (Exception oEx) { Db4oClient.Client.Rollback(); LoggingHelper.HandleException(oEx); } }
public static void SaveValues(long id, string attribName, object newValue, int offset) { try { object targetObject = Db4oClient.Client.Ext().GetByID(id); Db4oClient.Client.Ext().Activate(targetObject, 2); IReflectClass rclass = DataLayerCommon.ReflectClassFor(targetObject); IReflectField rfield = DataLayerCommon.GetDeclaredFieldInHeirarchy(rclass, attribName); IType type = new FieldDetails(rclass.GetName(), attribName).GetFieldType(); object obj = rfield.Get(targetObject); if (obj is IDictionary) { SaveDictionary(targetObject, attribName, newValue, KeyAtIndex((IDictionary)obj, offset / 2)); } else { if (rfield != null && !(rfield is GenericVirtualField || rfield.IsStatic())) { if (type.IsArray || type.IsCollection) { IList list = obj as IList; if (null != list) { list[offset] = newValue; rfield.Set(targetObject, list); } } } } } catch (Exception oEx) { Db4oClient.Client.Rollback(); LoggingHelper.HandleException(oEx); } }
public virtual object Get(IReflectField field, object onObject) { return field.Get(onObject); }
private void RenderSubObject(long id, IReflectField field) { try { object currObj = Db4oClient.Client.Ext().GetByID(id); object value = field.Get(currObj); IType type = ResolveFieldType(field); if (value != null) { container.Ext().Activate(value, 1); if (value.GetType().IsArray) { RenderArray(id, field); return; } } if (GetLocalID(value) == 0) { CreateSimplePrimitiveNode(field, value, type); } else { TreeGridViewRenderer treeGridViewRenderer = new TreeGridViewRenderer(); treeGridViewRenderer.DisplayFieldName = AppendIDTo(field.GetName(), GetLocalID(value), type); treeGridViewRenderer.FieldName = field.GetName(); treeGridViewRenderer.FieldValue = value != null ? type.FullName : BusinessConstants.DB4OBJECTS_NULL; treeGridViewRenderer.QualifiedName = field.GetFieldType().GetName(); treeGridViewRenderer.FieldType = SetFieldType(type); treeGridViewRenderer.ReadOnlyStatus = readOnly; treeGridViewRenderer.ObjectId = GetLocalID(value); treeGridViewRenderer.ObjectType = type; treeGridViewRenderer.HasSubNode = type.IsCollection || type.IsArray; if (treeGridViewRenderer.HasSubNode) { long longid = GetLocalID(value); if (value is GenericObject) { treeGridViewRenderer.ObjectId = longid; } else if (longid != 0) { treeGridViewRenderer.ObjectId = longid; } else { treeGridViewRenderer.SubObject = value; } } listTreeGridViewRenderers.Add(treeGridViewRenderer); if (currObj is DictionaryEntry && field.GetName() == BusinessConstants.DB4OBJECTS_KEY) { treeGridViewRenderer.ReadOnlyStatus = true; } else if (currObj is DictionaryEntry && field.GetName() == BusinessConstants.DB4OBJECTS_VALUE) { treeGridViewRenderer.ReadOnlyStatus = readOnly; } else if (field.Get(currObj) == null) { treeGridViewRenderer.ReadOnlyStatus = true; } else { treeGridViewRenderer.ReadOnlyStatus = true; } } } catch (Exception oEx) { LoggingHelper.HandleException(oEx); } }
private void RenderArray(long id, IReflectField field) { object currObj = Db4oClient.Client.Ext().GetByID(id); Db4oClient.Client.Ext().Activate(currObj, 2); object obj = field.Get(currObj); if (obj != null) { container.Ext().Activate(obj, 2); int length = container.Ext().Reflector().Array().GetLength(obj); CreateCollectionNode(field, obj, length); } else CreateCollectionNode(field, obj, 0); }
private void RenderCollection(long id, IReflectField field) { container = Db4oClient.Client; object currObj = container.Ext().GetByID(id); object value = field.Get(currObj); if (value != null) { container.Ext().Activate(value, 2); ICollection coll = (ICollection) value; CreateCollectionNode(field, value, coll.Count); } else CreateCollectionNode(field, value, 0); }
private void RenderSubObject(long id, IReflectField field) { try { object currObj = Db4oClient.Client.Ext().GetByID(id); object value = field.Get(currObj); IType type = ResolveFieldType(field); if (value != null) { container.Ext().Activate(value, 1); if(value.GetType().IsArray) { RenderArray(id, field); return; } } if (GetLocalID(value) == 0) { CreateSimplePrimitiveNode(field, value, type); } else { TreeGridViewRenderer treeGridViewRenderer = new TreeGridViewRenderer(); treeGridViewRenderer.DisplayFieldName = AppendIDTo(field.GetName(), GetLocalID(value), type); treeGridViewRenderer.FieldName = field.GetName(); treeGridViewRenderer.FieldValue = value != null ? type.FullName : BusinessConstants.DB4OBJECTS_NULL; treeGridViewRenderer.QualifiedName = field.GetFieldType().GetName(); treeGridViewRenderer.FieldType = SetFieldType(type); treeGridViewRenderer.ReadOnlyStatus = readOnly; treeGridViewRenderer.ObjectId = GetLocalID(value); treeGridViewRenderer.ObjectType = type; treeGridViewRenderer.HasSubNode = type.IsCollection || type.IsArray; if (treeGridViewRenderer.HasSubNode) { long longid = GetLocalID(value); if (value is GenericObject) treeGridViewRenderer.ObjectId = longid; else if (longid != 0) treeGridViewRenderer.ObjectId = longid; else { treeGridViewRenderer.SubObject = value; } } listTreeGridViewRenderers.Add(treeGridViewRenderer); if (currObj is DictionaryEntry && field.GetName() == BusinessConstants.DB4OBJECTS_KEY) treeGridViewRenderer.ReadOnlyStatus = true; else if (currObj is DictionaryEntry && field.GetName() == BusinessConstants.DB4OBJECTS_VALUE) treeGridViewRenderer.ReadOnlyStatus = readOnly; else if (field.Get(currObj) == null) treeGridViewRenderer.ReadOnlyStatus = true; else treeGridViewRenderer.ReadOnlyStatus = true; } } catch (Exception oEx) { LoggingHelper.HandleException(oEx); } }
public virtual object Get(IReflectField field, object onObject) { return(field.Get(onObject)); }
private void RenderSubObject(TreeGridNode parentNode, object parentObj, IReflectField field) { try { TreeGridNode objectNode = new TreeGridNode(); parentNode.Nodes.Add(objectNode); object value = field.Get(parentObj); if (value != null) { container.Ext().Activate(value, 1); } objectNode.Tag = value; IType fieldType = ResolveFieldType(field); objectNode.Cells[0].Value = AppendIDTo(field.GetName(), GetLocalID(value), fieldType); objectNode.Cells[1].Value = value != null ? value.ToString() : BusinessConstants.DB4OBJECTS_NULL; SetFieldType(objectNode, fieldType); if (parentNode.Tag is DictionaryEntry && field.GetName() == BusinessConstants.DB4OBJECTS_KEY) objectNode.Cells[1].ReadOnly = true; else if (parentNode.Tag is DictionaryEntry && field.GetName() == BusinessConstants.DB4OBJECTS_VALUE) objectNode.Cells[1].ReadOnly = checkReadonlyStatus(); else if (field.Get(parentObj) == null) objectNode.Cells[1].ReadOnly = true; else objectNode.Cells[1].ReadOnly = true; objectNode.ImageIndex = 0; //class if (value != null) { //container = Db4oClient.Client; //container.Ext().Activate(value, 2); TreeGridNode treenodeDummyChildNode = new TreeGridNode(); objectNode.Nodes.Add(treenodeDummyChildNode); treenodeDummyChildNode.Cells[0].Value = BusinessConstants.DB4OBJECTS_DUMMY; } } catch (Exception oEx) { LoggingHelper.HandleException(oEx); } }