public Identity IdentityOf(object obj) { IdentityPart[] parts = new IdentityPart[this.PartDefinitions.Length]; for (int i = 0; i < parts.Length; i++) { parts[i] = new IdentityPart(this.PartDefinitions[i], this.PartDefinitions[i].Property.GetValue(obj)); } ValidateConstraints(obj); return(new Identity(this, parts)); }
public override bool Equals(object obj) { if (!(obj is IdentityPart)) { return(false); } IdentityPart otherPart = (IdentityPart)obj; return (Object.Equals(otherPart.PartDefinition, this.PartDefinition) && Object.Equals(otherPart.Value, this.Value)); }
public bool HasValidValues(params object[] values) { if (values.Length != this.PartDefinitions.Length) { return(false); } IdentityPart[] parts = new IdentityPart[this.PartDefinitions.Length]; for (int i = 0; i < parts.Length; i++) { if (!this.PartDefinitions[i].Property.PropertyType.IsAssignableFrom(values[i].GetType())) { return(false); } } return(true); }
public Identity IdentityFromValues(IDictionary <IEntityProperty, object> propertyValues) { IdentityPart[] parts = new IdentityPart[this.PartDefinitions.Length]; try { for (int i = 0; i < parts.Length; i++) { parts[i] = new IdentityPart(this.PartDefinitions[i], propertyValues[this.PartDefinitions[i].Property]); } } catch (KeyNotFoundException) { throw new KeyNotFoundException(String.Format("The identity {{{0}}} requires properties that are not available.", this)); } ValidateConstraints(propertyValues); return(new Identity(this, parts)); }
public Identity IdentityFromValues(params object[] values) { if (values.Length != this.PartDefinitions.Length) { throw new ArgumentException("The number of values is different than the identity definition parts.", "values"); } IdentityPart[] parts = new IdentityPart[this.PartDefinitions.Length]; for (int i = 0; i < parts.Length; i++) { if (!this.PartDefinitions[i].Property.PropertyType.IsAssignableFrom(values[i].GetType())) { throw new ArgumentException("Passed value types don't match the parts of the identity definition."); } parts[i] = new IdentityPart(this.PartDefinitions[i], values[i]); } return(new Identity(this, parts)); }