Table of Contents

Class UserServiceCompleteness

Namespace
Tharga.Team
Assembly
Tharga.Team.dll

Finds persistence extension points a host has left un-overridden.

public static class UserServiceCompleteness
Inheritance
UserServiceCompleteness
Inherited Members

Remarks

Every member listed here is virtual with a do-nothing default, so forgetting one produces a write that reports success and discards the data. Three such gaps were diagnosed separately in one bug report before this existed; the consuming project asked for this guard over any individual fix.

Reflection over the concrete type, not an interface map. SetUserIconReferenceAsync is protected, so it does not appear in an interface map at all — and it is the one that cost the most to find. A guard that could not see it would miss the worst case while appearing to cover the set.

Deriving from a storage base such as UserServiceRepositoryBase overrides all of these, so a host on the built-in Mongo store reports nothing. The gaps only appear for a host extending UserServiceBase directly.

Methods

Find(Type, bool, bool)

The gaps in userServiceType, filtered to features the host can actually reach.

public static IReadOnlyList<UserServiceGap> Find(Type userServiceType, bool iconStoreRegistered, bool directoryRegistered)

Parameters

userServiceType Type
iconStoreRegistered bool
directoryRegistered bool

Returns

IReadOnlyList<UserServiceGap>

Remarks

Reachability matters because an un-overridden member is only a defect if something can call it. A host with no icon store registered cannot reach the icon path, and reporting it would be noise of exactly the kind that trains people to ignore startup output.

Overrides(Type, string)

Whether any type between type and UserServiceBase declares member. Walking the chain matters: a host may extend an intermediate base of its own, and that base's override counts.

public static bool Overrides(Type type, string member)

Parameters

type Type
member string

Returns

bool