/// <summary> /// Creates a new Property. /// </summary> /// <param name="name">Unique name for the new Property.</param> /// <param name="dt">Data type for the new Property.</param> /// <param name="kind">Property kind.</param> /// <returns>a Property.</returns> public PropertyType NewProperty(string name, DataType dt, PropertyKind kind) { PropertyType aType; if (stringToPropertyType.TryGetValue(name, out aType) == false) { graph.Update(); int pos = -1; int i = 0; foreach (PropertyType pt in graph.propertyType) { if (pt == null) { pos = i; break; } else { ++i; } } if (pos < 0) { pos = graph.propertyType.Length; Array.Resize(ref graph.propertyType, pos + 1); } aType = graph.PropertyTypeFromDataType(false, dt, this.TypeId, pos, name, kind); graph.propertyType[pos] = aType; stringToPropertyType.AddFast(name, aType); } return(aType); }
/// <summary> /// Creates a new Property. /// </summary> /// <param name="name">Unique name for the new Property.</param> /// <param name="dt">Data type for the new Property.</param> /// <param name="kind">Property kind.</param> /// <returns>a Property.</returns> public PropertyType NewProperty(string name, DataType dt, PropertyKind kind) { PropertyType aType; if (stringToPropertyType.TryGetValue(name, out aType) == false) { graph.Update(); int pos = -1; int i = 0; foreach (PropertyType pt in graph.propertyType) { if (pt == null) { pos = i; break; } else { ++i; } } if (pos < 0) { pos = graph.propertyType.Length; Array.Resize(ref graph.propertyType, pos + 1); } switch (dt) { case DataType.Boolean: aType = new PropertyTypeT <bool>(false, this.TypeId, pos, name, kind, graph); break; case DataType.Integer: aType = new PropertyTypeT <int>(false, this.TypeId, pos, name, kind, graph); break; case DataType.Long: aType = new PropertyTypeT <long>(false, this.TypeId, pos, name, kind, graph); break; case DataType.Double: aType = new PropertyTypeT <double>(false, this.TypeId, pos, name, kind, graph); break; case DataType.DateTime: aType = new PropertyTypeT <DateTime>(false, this.TypeId, pos, name, kind, graph); break; case DataType.String: aType = new PropertyTypeT <string>(false, this.TypeId, pos, name, kind, graph); break; case DataType.Object: aType = new PropertyTypeT <IComparable>(false, this.TypeId, pos, name, kind, graph); break; } graph.propertyType[pos] = aType; stringToPropertyType.AddFast(name, aType); } return(aType); }