/// <summary> /// The create implementation. /// </summary> /// <param name="entity"> /// The entity. /// </param> /// <param name="keyProviders"> /// The key providers. /// </param> /// <param name="descriptionProviders"> /// The description providers. /// </param> /// <returns> /// an object summary /// </returns> public static ObjectSummary CreateImplementation(object entity, List <IKeyProvider> keyProviders = null, List <IDescriptionProvider> descriptionProviders = null) { var objectSummary = new ObjectSummary { EntityTypeName = entity.GetType().Name }; foreach (RegisteredKeyProvider registeredKeyProvider in KeyProviders.OrderBy(@kp => @kp.Order)) { ObjectSummaryKeys foundKeys = registeredKeyProvider.Provider.FindKeys(entity); bool keysFound = foundKeys != null; if (keysFound) { objectSummary.Keys = foundKeys; } if (registeredKeyProvider.Breaking && keysFound) { break; } } foreach (RegisteredDescriptionProvider registeredKeyProvider in DescriptionProviders.OrderBy(@dp => @dp.Order)) { string foundDisplayText = registeredKeyProvider.Provider.FindDescription(entity); string[] foundDisplayNames = registeredKeyProvider.Provider.FindDescriptionPropertyNames(entity); if (foundDisplayText != null) { objectSummary.DisplayText = foundDisplayText; } if (foundDisplayNames != null && foundDisplayNames.Any()) { objectSummary.DisplayFields = foundDisplayNames; } if (registeredKeyProvider.Breaking && foundDisplayText != null) { break; } } return(objectSummary); }
/// <summary> /// The find keys. /// </summary> /// <param name="entity">The entity.</param> /// <returns>object summary keys</returns> /// <exception cref="ArgumentNullException">thrown if the entity is null</exception> public ObjectSummaryKeys FindKeys(object entity) { if (entity == null) { throw new ArgumentNullException("entity", "Can't summarize a null entity"); } var key = new ObjectSummaryKeys(); foreach ( PropertyInfo propertyInfo in entity.GetType().GetProperties().Where( @p => @p.Name.ToUpper().EndsWith("ID") || @p.Name.ToUpper().EndsWith("PK"))) { key[propertyInfo.Name] = propertyInfo.GetValue(entity, new object[0]); } return(key); }
/// <summary> /// The find keys. /// </summary> /// <param name="entity">The entity.</param> /// <returns>Object summary keys</returns> /// <exception cref="ArgumentNullException">thrown if the entity is null </exception> public ObjectSummaryKeys FindKeys(object entity) { if (entity == null) { throw new ArgumentNullException("entity", "Can't find keys for a null entity"); } IEnumerable <PropertyInfo> keyProperties = entity.GetType().GetProperties().Where(p => p.GetAttribute <KeyAttribute>() != null); var entityKeys = new ObjectSummaryKeys(); foreach (PropertyInfo keyProperty in keyProperties) { entityKeys[keyProperty.Name] = keyProperty.GetValue(entity, null); } return(entityKeys); }
public ObjectSummary() { Keys = new ObjectSummaryKeys(); DisplayFields = new List <string>(); }