This document provides a comprehensive inventory of the interface hierarchy for the three main entities in the WindowsAppCommunity.Sdk: Publisher, Project, and User. This mapping helps developers understand the type relationships and data access patterns.
IReadOnlyUser : IReadOnlyEntity, IReadOnlyPublisherRoleCollection, IReadOnlyProjectRoleCollection, IHasId
Purpose: Represents a user with access to their entity data, publisher roles, and project roles.
Key Properties:
- Inherits all properties from
IReadOnlyEntity(name, description, connections, links, images) - Access to publisher roles via
IReadOnlyPublisherRoleCollection - Access to project roles via
IReadOnlyProjectRoleCollection
IReadOnlyPublisher : IReadOnlyPublisher<IReadOnlyPublisherRoleCollection>
IReadOnlyPublisher<TPublisherCollection> : IReadOnlyEntity, IReadOnlyAccentColor, IReadOnlyUserRoleCollection, IReadOnlyProjectCollection, IHasId
where TPublisherCollection : IReadOnlyPublisherCollection<IReadOnlyPublisherRole>
Purpose: Represents a publisher entity with accent color, user roles, projects, and hierarchical publisher relationships.
Key Properties:
- Inherits all properties from
IReadOnlyEntity(name, description, connections, links, images) AccentColorviaIReadOnlyAccentColor- User roles via
IReadOnlyUserRoleCollection - Projects via
IReadOnlyProjectCollection ParentPublishersandChildPublishers(hierarchical relationships)
IReadOnlyProject : IReadOnlyProject<IReadOnlyProjectCollection>
IReadOnlyProject<TDependencyCollection> : IReadOnlyEntity, IReadOnlyImagesCollection, IReadOnlyUserRoleCollection, IReadOnlyAccentColor, IReadOnlyFeaturesCollection, IHasId
where TDependencyCollection : IReadOnlyProjectCollection<IReadOnlyProject>
Purpose: Represents a project entity with dependencies, features, accent color, users, and images.
Key Properties:
- Inherits all properties from
IReadOnlyEntity(name, description, connections, links, images) - Additional images via
IReadOnlyImagesCollection - User roles via
IReadOnlyUserRoleCollection AccentColorviaIReadOnlyAccentColorFeaturesviaIReadOnlyFeaturesCollectionDependencies(other projects this project depends on)Category(string property for app store categorization)GetPublisherAsync()method to retrieve associated publisher
IReadOnlyEntity : IReadOnlyConnectionsCollection, IReadOnlyLinksCollection, IReadOnlyImagesCollection, IHasId
Properties:
Name(string)Description(string, supports markdown)ExtendedDescription(string, supports markdown)ForgetMe(bool?)IsUnlisted(bool)
Events:
NameUpdatedDescriptionUpdatedExtendedDescriptionUpdatedForgetMeUpdatedIsUnlistedUpdated
IReadOnlyConnectionsCollection : IHasId
GetConnectionsAsync()→IAsyncEnumerable<IReadOnlyConnection>- Events:
ConnectionsAdded,ConnectionsRemoved
IReadOnlyLinksCollection : IHasId
Links(Link[] property)- Events:
LinksAdded,LinksRemoved
IReadOnlyImagesCollection : IHasId
GetImageFilesAsync()→IAsyncEnumerable<IFile>- Events:
ImagesAdded,ImagesRemoved
IReadOnlyAccentColor : IHasId
AccentColor(string?)- Events:
AccentColorUpdated
IReadOnlyFeaturesCollection : IHasId
Features(string[])- Events:
FeaturesAdded,FeaturesRemoved
IReadOnlyUserRoleCollection : IReadOnlyUserCollection<IReadOnlyUserRole>
IReadOnlyUserCollection<TUser> : IHasId where TUser : IReadOnlyUser
GetUsersAsync()→IAsyncEnumerable<TUser>
IReadOnlyProjectRoleCollection : IReadOnlyProjectCollection<IReadOnlyProjectRole>
IReadOnlyPublisherRoleCollection : IReadOnlyPublisherCollection<IReadOnlyPublisherRole>
IReadOnlyProjectCollection<TProject> : IHasId where TProject : IReadOnlyProject
GetProjectsAsync()→IAsyncEnumerable<TProject>- Events:
ProjectsAdded,ProjectsRemoved
IReadOnlyPublisherCollection<TPublisher> : IHasId where TPublisher : IReadOnlyPublisher
GetPublishersAsync()→IAsyncEnumerable<TPublisher>- Events:
PublishersAdded,PublishersRemoved
IReadOnlyUserRole : IReadOnlyUser
Role(Role property)
IReadOnlyProjectRole : IReadOnlyProject
Role(Role property)
IReadOnlyPublisherRole : IReadOnlyPublisher
Role(Role property)
public class Role
{
public required string Id { get; init; }
public required string Name { get; init; }
public required string Description { get; init; }
}public class Link : IStorable
{
public required string Id { get; init; }
public required string Url { get; set; }
public required string Name { get; set; }
public required string Description { get; set; }
}public interface IReadOnlyConnection
{
string Id { get; }
Task<string> GetValueAsync(CancellationToken cancellationToken = default);
event EventHandler<string>? ValueUpdated;
}IReadOnlyUser
├── IReadOnlyEntity
│ ├── IReadOnlyConnectionsCollection
│ │ └── IHasId
│ ├── IReadOnlyLinksCollection
│ │ └── IHasId
│ ├── IReadOnlyImagesCollection
│ │ └── IHasId
│ └── IHasId
├── IReadOnlyPublisherRoleCollection
│ └── IReadOnlyPublisherCollection<IReadOnlyPublisherRole>
│ └── IHasId
├── IReadOnlyProjectRoleCollection
│ └── IReadOnlyProjectCollection<IReadOnlyProjectRole>
│ └── IHasId
└── IHasId
IReadOnlyProject
└── IReadOnlyProject<TDependencyCollection>
├── IReadOnlyEntity
│ ├── IReadOnlyConnectionsCollection
│ │ └── IHasId
│ ├── IReadOnlyLinksCollection
│ │ └── IHasId
│ ├── IReadOnlyImagesCollection
│ │ └── IHasId
│ └── IHasId
├── IReadOnlyImagesCollection
│ └── IHasId
├── IReadOnlyUserRoleCollection
│ └── IReadOnlyUserCollection<IReadOnlyUserRole>
│ └── IHasId
├── IReadOnlyAccentColor
│ └── IHasId
├── IReadOnlyFeaturesCollection
│ └── IHasId
└── IHasId
IReadOnlyPublisher
└── IReadOnlyPublisher<TPublisherCollection>
├── IReadOnlyEntity
│ ├── IReadOnlyConnectionsCollection
│ │ └── IHasId
│ ├── IReadOnlyLinksCollection
│ │ └── IHasId
│ ├── IReadOnlyImagesCollection
│ │ └── IHasId
│ └── IHasId
├── IReadOnlyAccentColor
│ └── IHasId
├── IReadOnlyUserRoleCollection
│ └── IReadOnlyUserCollection<IReadOnlyUserRole>
│ └── IHasId
├── IReadOnlyProjectCollection
│ └── IHasId
└── IHasId
This interface inventory provides a comprehensive reference for understanding the type hierarchy and relationships within the WindowsAppCommunity.Sdk.