예제 #1
0
        public ViewCoordinator(
            IGroupProvider groupProvider,
            IMemberProvider memberProvider,
            IRelationshipProvider relationshipProvider,
            IRelationshipMemberProvider relationshipMemberProvider,
            IRelationshipTypeProvider relationshipTypeProvider,
            IDetailProvider detailProvider,
            IDetailTypeQueryManager detailTypeQueryManager,
            ILogger <ViewCoordinator> logger)
        {
            Contract.RequiresNotNull(groupProvider, nameof(groupProvider));
            Contract.RequiresNotNull(memberProvider, nameof(memberProvider));
            Contract.RequiresNotNull(relationshipProvider, nameof(relationshipProvider));
            Contract.RequiresNotNull(relationshipMemberProvider, nameof(relationshipMemberProvider));
            Contract.RequiresNotNull(relationshipTypeProvider, nameof(relationshipTypeProvider));
            Contract.RequiresNotNull(detailProvider, nameof(detailProvider));
            Contract.RequiresNotNull(detailTypeQueryManager, nameof(detailTypeQueryManager));
            Contract.RequiresNotNull(logger, nameof(logger));

            this.groupProvider              = groupProvider;
            this.memberProvider             = memberProvider;
            this.relationshipProvider       = relationshipProvider;
            this.relationshipMemberProvider = relationshipMemberProvider;
            this.relationshipTypeProvider   = relationshipTypeProvider;
            this.detailProvider             = detailProvider;
            this.detailTypeQueryManager     = detailTypeQueryManager;
            this.logger = logger;
        }
예제 #2
0
 /// <summary>
 /// Constructor, creates a RenderContext
 /// </summary>
 /// <param name="objectToRender">The object to render</param>
 /// <param name="builder">The <see cref="StringBuilder"/> to append the rendering into</param>
 /// <param name="typeRenderers">The type renderers registered in the system</param>
 /// <param name="detailProviders">The detail providers registered in the system</param>
 /// <param name="fallbackDetailProvider">The fallback detail provider</param>
 public RenderContext(T objectToRender, StringBuilder builder, IList <ITypeRenderer> typeRenderers, ICollection <IDetailProvider> detailProviders, IDetailProvider fallbackDetailProvider)
 {
     ObjectToRender         = objectToRender;
     Builder                = builder;
     TypeRenderers          = typeRenderers;
     DetailProviders        = detailProviders;
     FallbackDetailProvider = fallbackDetailProvider;
 }
예제 #3
0
        public RelationshipDetailManager(IDetailProvider detailProvider, IDetailAssociationProvider detailAssociationProvider)
        {
            Contract.RequiresNotNull(detailProvider, nameof(detailProvider));
            Contract.RequiresNotNull(detailAssociationProvider, nameof(detailAssociationProvider));

            this.detailProvider            = detailProvider;
            this.detailAssociationProvider = detailAssociationProvider;
        }
예제 #4
0
        /// <summary>
        /// Gets the details for a object by using a set of <see cref="IDetailProvider"/>s. If none of the
        /// <see cref="IDetailProvider"/>s specified by <paramref name="providers"/> are able to provide
        /// details for the object, then the <paramref name="fallbackDetailProvider"/> is used to provide
        /// details.
        /// </summary>
        /// <param name="forObject">The object to get the details for</param>
        /// <param name="providers">The <see cref="IDetailProvider"/> to use</param>
        /// <param name="fallbackDetailProvider">
        /// The fallback <see cref="IDetailProvider"/> to use if none of the <paramref name="providers"/> can
        /// be used
        /// </param>
        /// <returns>
        /// A collection of details about the object where the key in the <see cref="KeyValuePair{TKey,TValue}"/>
        /// is the detail's name and the value is the object that is the detail.
        /// </returns>
        public static IEnumerable <KeyValuePair <string, object> > GetDetailsForObject(object forObject, IEnumerable <IDetailProvider> providers, IDetailProvider fallbackDetailProvider)
        {
            bool matched = false;

            foreach (IDetailProvider detailProvider in providers)
            {
                if (detailProvider.CanProvideDetailFor(forObject) == false)
                {
                    continue;
                }

                matched = true;
                foreach (KeyValuePair <string, object> detailPair in detailProvider.GetDetail(forObject))
                {
                    yield return(detailPair);
                }
            }

            if (matched == false)
            {
                if (fallbackDetailProvider.CanProvideDetailFor(forObject))
                {
                    foreach (KeyValuePair <string, object> detailPair in fallbackDetailProvider.GetDetail(forObject))
                    {
                        yield return(detailPair);
                    }
                }
            }
        }
예제 #5
0
        public DetailQueryController(IDetailProvider detailProvider)
        {
            Contract.RequiresNotNull(detailProvider, nameof(detailProvider));

            this.detailProvider = detailProvider;
        }