-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathINavigableTopicViewModel.cs
46 lines (40 loc) · 2.39 KB
/
INavigableTopicViewModel.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*==============================================================================================================================
| Author Ignia, LLC
| Client Ignia
| Project Website
\=============================================================================================================================*/
using System.ComponentModel.DataAnnotations;
namespace OnTopic.Models {
/*============================================================================================================================
| INTERFACE: NAVIGABLE TOPIC VIEW MODEL
\---------------------------------------------------------------------------------------------------------------------------*/
/// <summary>
/// Ensures basic properties needed to treat a view model as a navigable entry.
/// </summary>
/// <remarks>
/// No topics are expected to have a <c>Navigable</c> content type. Instead, implementers of this view model are expected
/// to manually construct instances.
/// </remarks>
public interface INavigableTopicViewModel {
/*==========================================================================================================================
| PROPERTY: TITLE
\-------------------------------------------------------------------------------------------------------------------------*/
/// <inheritdoc cref="ITopicViewModel.Title"/>
[Required, NotNull, DisallowNull]
string? Title { get; init; }
/*==========================================================================================================================
| PROPERTY: SHORT TITLE
\-------------------------------------------------------------------------------------------------------------------------*/
/// <summary>
/// In addition to the Title, a site may opt to define a Short Title used exclusively in the navigation. If present, this
/// value should be used instead of Title.
/// </summary>
string? ShortTitle { get; init; }
/*==========================================================================================================================
| PROPERTY: WEB PATH
\-------------------------------------------------------------------------------------------------------------------------*/
/// <inheritdoc cref="ITopicViewModel.WebPath"/>
[Required, NotNull, DisallowNull]
string? WebPath { get; init; }
} //Class
} //Namespace