DynamicallyAccessedMembers annotations on a type will treat the return value of GetType as satisfying the annotation, for a call to this.GetType(), but not for a call to c.GetType() where c is assignable to the annotated type.
This causes a warning on the call to Require(c.GetType()) in the sample below. It's possible to work around this by defining an annotated helper on the type that just returns this.GetType(), but this ideally wouldn't be necessary:
using System.Diagnostics.CodeAnalysis;
C c = new();
Require(c.GetType()); // Warning
Require(c.GetTypeWithConstructors()); // OK
static void Require([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] Type type) {}
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)]
class C {
[return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)]
public Type GetTypeWithConstructors() => GetType();
}