bool canWrite(AApiVersionedFields owner, string field) { if (owner.GetType().Equals(typeof(AsKVP))) { return(true); } if (owner.GetType().Equals(typeof(ArrayOwner))) { return(true); } return(owner.GetType().GetProperty(field).CanWrite); }
public static Type GetFieldType(AApiVersionedFields owner, string field) { try { Type type = AApiVersionedFields.GetContentFieldTypes(0, owner.GetType())[GetFieldName(field)]; if (field.IndexOf(' ') == -1) { return(type); } else { if (type.HasElementType && !type.GetElementType().IsAbstract) { return(type.GetElementType()); } Type baseType = GetGenericType(type); if (baseType != null && !baseType.IsAbstract) { return(baseType); } return(GetFieldValue(owner, field).Type); } } catch (Exception ex) { throw ex; } }
public void SetField(AApiVersionedFields owner, string field) { type = AApiVersionedFields.GetContentFieldTypes(0, owner.GetType())[field]; if (!(typeof(TextReader).IsAssignableFrom(type) || typeof(BinaryReader).IsAssignableFrom(type))) throw new InvalidCastException(); this.owner = owner; this.field = field; btnImport.Enabled = owner.GetType().GetProperty(field).CanWrite; btnExport.Enabled = owner.GetType().GetProperty(field).CanRead; //TextReader does not have BaseStream, which is needed for ViewHex btnViewHex.Enabled = typeof(BinaryReader).IsAssignableFrom(type); btnEdit.Enabled = false; if (btnExport.Enabled && btnImport.Enabled) { bool hasText = S4PIDemoFE.Properties.Settings.Default.TextEditorCmd != null && S4PIDemoFE.Properties.Settings.Default.TextEditorCmd.Length > 0; bool hasHex = S4PIDemoFE.Properties.Settings.Default.HexEditorCmd != null && S4PIDemoFE.Properties.Settings.Default.HexEditorCmd.Length > 0; btnEdit.Enabled = (typeof(TextReader).IsAssignableFrom(type) && hasText) || (typeof(BinaryReader).IsAssignableFrom(type) && hasHex); } }
void setFlags(AApiVersionedFields owner, string field, ulong mask, bool value) { ulong old = getFlags(owner, field); ulong res = old & ~mask; if (value) { res |= mask; } Type t = AApiVersionedFields.GetContentFieldTypes(0, owner.GetType())[field]; TypedValue tv = new TypedValue(t, Enum.ToObject(t, res)); owner[field] = tv; }
public void SetField(AApiVersionedFields owner, string field) { type = AApiVersionedFields.GetContentFieldTypes(0, owner.GetType())[field]; if (!(typeof(TextReader).IsAssignableFrom(type) || typeof(BinaryReader).IsAssignableFrom(type))) { throw new InvalidCastException(); } this.owner = owner; this.field = field; btnImport.Enabled = owner.GetType().GetProperty(field).CanWrite; btnExport.Enabled = owner.GetType().GetProperty(field).CanRead; //TextReader does not have BaseStream, which is needed for ViewHex btnViewHex.Enabled = typeof(BinaryReader).IsAssignableFrom(type); btnEdit.Enabled = false; if (btnExport.Enabled && btnImport.Enabled) { bool hasText = S4PIDemoFE.Properties.Settings.Default.TextEditorCmd != null && S4PIDemoFE.Properties.Settings.Default.TextEditorCmd.Length > 0; bool hasHex = S4PIDemoFE.Properties.Settings.Default.HexEditorCmd != null && S4PIDemoFE.Properties.Settings.Default.HexEditorCmd.Length > 0; btnEdit.Enabled = (typeof(TextReader).IsAssignableFrom(type) && hasText) || (typeof(BinaryReader).IsAssignableFrom(type) && hasHex); } }
public TypedValuePropertyDescriptor(AApiVersionedFields owner, string field, Attribute[] attrs) : base(field, attrs) { try { this.owner = owner; if (typeof(ArrayOwner).Equals(owner.GetType())) { fieldType = ((ArrayOwner)owner).ElementType; } else if (typeof(AsKVP).Equals(owner.GetType())) { fieldType = ((AsKVP)owner).GetType(Name); } else { string name = GetFieldName(field); fieldType = GetFieldType(owner, field); priority = ElementPriorityAttribute.GetPriority(owner.GetType(), name); tgiBlocks = owner.GetTGIBlocks(name); } } catch (Exception ex) { throw ex; } }