コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
ファイル: ObjectSummary.cs プロジェクト: jfreal/movidhep
 public ObjectSummary()
 {
     Keys          = new ObjectSummaryKeys();
     DisplayFields = new List <string>();
 }