You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The paths to the documentation hadn't been updated after reorganizing the namespaces (fc23a61)—whoops! Nor had the new `TopicMultiMap` or `ReadOnlyTopicMultiMap` classes been accounted for. Both are now factored into the `README.md`. While I was at it, I now account for specialized collections under a new "Specialty Collections" subheading.
Copy file name to clipboardExpand all lines: OnTopic/README.md
+15-10Lines changed: 15 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,7 @@ The `OnTopic` assembly represents the core domain layer of the OnTopic library.
13
13
-[Implementation](#implementation)
14
14
-[Extension Methods](#extension-methods)
15
15
-[Collections](#collections)
16
+
-[Specialty Collections](#specialty-collections)
16
17
-[Editor](#editor-1)
17
18
-[View Models](#view-models)
18
19
@@ -32,33 +33,37 @@ Out of the box, the OnTopic library contains two specially derived topics for su
32
33
-**[`ITopicRepository`](Repositories/ITopicRepository.cs)**: Defines the data access layer interface, with `Load()`, `Save()`, `Delete()`, `Move()`, and `Rollback()` methods.
33
34
-**[`ITopicMappingService`](Mapping/README.md)**: Defines interface for a service that can convert a `Topic` class into any arbitrary data transfer object based on predetermined conventions—or vice versa (via the `IReverseTopicMappingService`.
34
35
-**[`IHierarchicalTopicMappingService<T>`](Mapping/Hierarchical/README.md)**: Defines an interface for applying the `ITopicMappingService` to hierarchical data with constraints on depth. Used primarily for mapping navigation, such as in the [`NavigationTopicViewComponentBase<T>`](../OnTopic.AspNetCore.Mvc/Components/NavigationTopicViewComponentBase{T}.cs).
35
-
-**[`ITypeLookupService`](ITypeLookupService.cs)**: Defines the interface that can identify `Type` objects based on a `GetType(typeName)` query. Used by e.g. `ITopicMappingService` to find corresponding `TopicViewModel` classes to map to.
36
+
-**[`ITypeLookupService`](lookup/ITypeLookupService.cs)**: Defines the interface that can identify `Type` objects based on a `GetType(typeName)` query. Used by e.g. `ITopicMappingService` to find corresponding `TopicViewModel` classes to map to.
36
37
37
38
## Implementations
38
39
-**[`TopicMappingService`](Mapping/README.md)**: A default implementation of the `ITopicMappingService`, with built-in conventions that should address that majority of mapping requirements. This also includes a number of attributes for annotating view models with hints that the `TopicMappingService` can use in populating target objects.
39
40
-**[`CachedTopicMappingService`](Mapping/README.md)**: Provides an optional caching layer for the `TopicMappingService`—or any `ITopicMappingService` implementation.
40
41
-**[`ReverseTopicMappingService`](Mapping/Reverse/README.md)**: A default implementation of the `IReverseTopicMappingService`, honoring similar conventions and attribute hints as the `TopicMappingService`.
41
42
-**[`HierarchicalTopicMappingService<T>`](Mapping/Hierarchical/README.md)**: A default implementation of the `IHierarchicalTopicMappingService<T>`, which accepts an `ITopicMappingService` for mapping each individual node in the hierarchy.
42
43
-**[`CachedHierarchicalTopicMappingService<T>`](Mapping/Hierarchical/README.md)**: Provides an optional caching layer for the `HierarchicalTopicMappingService`—or any `IHierarchicalTopicMappingService` implementation.
43
-
-**[`StaticTypeLookupService`](StaticTypeLookupService.cs)**: A basic implementation of the `ITypeLookupService` interface that allows types to be explicitly registered; useful when a small number of types are expected.
44
-
-**[`DynamicTypeLookupService`](Reflection/DynamicTypeLookupService.cs)**: A reflection-based implementation of the `ITypeLookupService` interface that looks up types from all loaded assemblies based on a `Func<Type, bool>` delegate.
45
-
-**[`DynamicTopicLookupService`](Reflection/DynamicTopicLookupService.cs)**: A version of `DynamicTypeLookupService` that returns all classes that derive from `Topic`; this is the default implementation for `TopicFactory`.
46
-
-**[`DynamicTopicViewModeLookupService`](Reflection/DynamicTopicViewModelLookupService.cs)**: A version of `DynamicTypeLookupService` that returns all classes that end with `TopicViewModel`; this is useful for the `TopicMappingService`.
47
-
-**[`DynamicTopicBindingModelLookupService`](Reflection/DynamicTopicBindingModelLookupService.cs)**: A version of `DynamicTypeLookupService` that returns all classes that implement `ITopicBindingModel`; this is useful for the `ReverseTopicMappingService`.
44
+
-**[`StaticTypeLookupService`](Lookup/StaticTypeLookupService.cs)**: A basic implementation of the `ITypeLookupService` interface that allows types to be explicitly registered; useful when a small number of types are expected.
45
+
-**[`DynamicTypeLookupService`](Lookup/DynamicTypeLookupService.cs)**: A reflection-based implementation of the `ITypeLookupService` interface that looks up types from all loaded assemblies based on a `Func<Type, bool>` delegate.
46
+
-**[`DynamicTopicLookupService`](Lookup/DynamicTopicLookupService.cs)**: A version of `DynamicTypeLookupService` that returns all classes that derive from `Topic`; this is the default implementation for `TopicFactory`.
47
+
-**[`DynamicTopicViewModeLookupService`](Lookup/DynamicTopicViewModelLookupService.cs)**: A version of `DynamicTypeLookupService` that returns all classes that end with `TopicViewModel`; this is useful for the `TopicMappingService`.
48
+
-**[`DynamicTopicBindingModelLookupService`](Lookup/DynamicTopicBindingModelLookupService.cs)**: A version of `DynamicTypeLookupService` that returns all classes that implement `ITopicBindingModel`; this is useful for the `ReverseTopicMappingService`.
48
49
49
50
## Extension Methods
50
51
-**[`Querying`](Querying/TopicExtensions.cs)**: The `TopicExtensions` class exposes optional extension methods for querying a topic (and its descendants) based on attribute values. This includes the useful `Topic.FindAll(Func<Topic, bool>)` method for querying an entire topic graph and returning topics validated by a predicate.
51
-
-**[`Attributes`](Attributes/AttributeValueCollectionExtensions.cs)**: The `AttributeValueCollectionExtensions` class exposes optional extension methods for strongly typed access to the [`AttributeValueCollection`](Collections/AttributeValueCollection.cs). This includes e.g., `GetBooleanValue()` and `SetBooleanValue()`, which takes care of the conversion to and from the underlying `string`value type.
52
+
-**[`Attributes`](Attributes/AttributeValueCollectionExtensions.cs)**: The `AttributeValueCollectionExtensions` class exposes optional extension methods for strongly typed access to the [`AttributeValueCollection`](Attributes/AttributeValueCollection.cs). This includes e.g., `GetBooleanValue()` and `SetBooleanValue()`, which takes care of the conversion to and from the underlying `string`value type.
52
53
53
54
## Collections
54
55
In addition to the above key classes, the `OnTopic` assembly contains a number of specialized collections. These include:
55
56
-**[`TopicCollection{T}`](Collections/TopicCollection{T}.cs)**: A `KeyedCollection` of a `Topic` (or derivative) keyed by `Id` and `Key`.
56
57
-**[`TopicCollection`](Collections/TopicCollection.cs)**: A `KeyedCollection` of `Topic` keyed by `Id` and `Key`.
57
-
-**[`NamedTopicCollection`](Collections/NamedTopicCollection.cs)**: Provides a unique name to a `TopicCollection` so it can be keyed as part of a collection-of-collections.
58
58
-**[`ReadOnlyTopicCollection{T}`](Collections/ReadOnlyTopicCollection{T}.cs)**: A read-only `KeyedCollection` of a `Topic` (or derivative) keyed by `Id` and `Key`.
59
59
-**[`ReadOnlyTopicCollection`](Collections/ReadOnlyTopicCollection.cs)**: A read-only `KeyedCollection` of `Topic` keyed by `Id` and `Key`.
60
-
-**[`TopicRelationshipMultiMap`](Collections/TopicRelationshipMultiMap.cs)**: A `KeyedCollection` of `NamedTopicCollection` objects, keyed by `Name`, thus providing a collection-of-collections.
61
-
-**[`AttributeValueCollection`](collections/AttributeValueCollection.cs)**: A `KeyedCollection` of `AttributeValue` instances keyed by `AttributeValue.Key`.
60
+
-**[`TopicMultiMap`](Collections/TopicMultiMap.cs)**: Provides a multi-map (or collection-of-collections) for topics organized by a collection name.
61
+
-**[`ReadOnlyTopicMultiMap`](Collections/ReadOnlyTopicMultiMap.cs)**: A read-only interface to the `TopicMultiMap`, thus allowing simple enumeration of the collection withouthout exposing any write access.
62
+
63
+
### Specialty Collections
64
+
-**[`TopicRelationshipMultiMap`](References/TopicRelationshipMultiMap.cs)**: A `KeyedCollection` of `NamedTopicCollection` objects, keyed by `Name`, thus providing a collection-of-collections.
65
+
-**[`TopicRelationshipMultiMap`](References/TopicRelationshipMultiMap.cs)**: A `KeyedCollection` of `NamedTopicCollection` objects, keyed by `Name`, thus providing a collection-of-collections.
66
+
-**[`AttributeValueCollection`](attributes/AttributeValueCollection.cs)**: A `KeyedCollection` of `AttributeValue` instances keyed by `AttributeValue.Key`.
62
67
63
68
### Editor
64
69
The following are intended to provide support for the Editor domain objects, `ContentTypeDescriptor` and `AttributeDescriptor`.
0 commit comments