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; }
/// <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; }
public RelationshipDetailManager(IDetailProvider detailProvider, IDetailAssociationProvider detailAssociationProvider) { Contract.RequiresNotNull(detailProvider, nameof(detailProvider)); Contract.RequiresNotNull(detailAssociationProvider, nameof(detailAssociationProvider)); this.detailProvider = detailProvider; this.detailAssociationProvider = detailAssociationProvider; }
/// <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); } } } }
public DetailQueryController(IDetailProvider detailProvider) { Contract.RequiresNotNull(detailProvider, nameof(detailProvider)); this.detailProvider = detailProvider; }