What a provider can actually do when asked to narrow a message read.
This exists because GetMessages is abstract: there is no base implementation to fall back on, so
an unsupported filter is simply ignored by whichever provider received it. Ignoring a date bound
is not a cosmetic failure — the caller gets MORE messages than it asked for and has no way to tell
that from a mailbox that genuinely holds them. Declaring capability makes that knowable before the
call, and GetMessagesResult.AppliedFilters makes it checkable after.
The base class declares everything FALSE. A provider opts in by overriding, so a provider that has
not considered the question is described accurately rather than optimistically.
What a provider can actually do when asked to narrow a message read.
This exists because
GetMessagesis abstract: there is no base implementation to fall back on, so an unsupported filter is simply ignored by whichever provider received it. Ignoring a date bound is not a cosmetic failure — the caller gets MORE messages than it asked for and has no way to tell that from a mailbox that genuinely holds them. Declaring capability makes that knowable before the call, andGetMessagesResult.AppliedFiltersmakes it checkable after.The base class declares everything FALSE. A provider opts in by overriding, so a provider that has not considered the question is described accurately rather than optimistically.