Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ public AllowedValuesAttribute(params object?[] values) { }
public partial class AssociatedMetadataTypeTypeDescriptionProvider : System.ComponentModel.TypeDescriptionProvider
{
public AssociatedMetadataTypeTypeDescriptionProvider(System.Type type) { }
public AssociatedMetadataTypeTypeDescriptionProvider(System.Type type, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type associatedMetadataType) { }
public override System.ComponentModel.ICustomTypeDescriptor GetTypeDescriptor([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type objectType, object? instance) { throw null; }
public AssociatedMetadataTypeTypeDescriptionProvider(System.Type type, [System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.Interfaces)] System.Type associatedMetadataType) { }
public override System.ComponentModel.ICustomTypeDescriptor GetTypeDescriptor([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.Interfaces)] System.Type objectType, object? instance) { throw null; }
}
[System.AttributeUsageAttribute(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=false, Inherited=true)]
[System.ObsoleteAttribute("AssociationAttribute has been deprecated and is not supported.")]
Expand Down Expand Up @@ -229,8 +229,8 @@ public MaxLengthAttribute(int length) { }
[System.AttributeUsageAttribute(System.AttributeTargets.Class, AllowMultiple=false)]
public sealed partial class MetadataTypeAttribute : System.Attribute
{
public MetadataTypeAttribute([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type metadataClassType) { }
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
public MetadataTypeAttribute([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.Interfaces)] System.Type metadataClassType) { }
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.Interfaces)]
public System.Type MetadataClassType { get { throw null; } }
}
[System.AttributeUsageAttribute(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property, AllowMultiple=false)]
Expand All @@ -254,13 +254,13 @@ public partial class RangeAttribute : System.ComponentModel.DataAnnotations.Vali
public RangeAttribute(double minimum, double maximum) { }
public RangeAttribute(int minimum, int maximum) { }
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute("Generic TypeConverters may require the generic types to be annotated. For example, NullableConverter requires the underlying type to be DynamicallyAccessedMembers All.")]
public RangeAttribute([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)] System.Type type, string minimum, string maximum) { }
public RangeAttribute([System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.Interfaces)] System.Type type, string minimum, string maximum) { }
public bool ConvertValueInInvariantCulture { get { throw null; } set { } }
public object Maximum { get { throw null; } }
public bool MaximumIsExclusive { get { throw null; } set { } }
public object Minimum { get { throw null; } }
public bool MinimumIsExclusive { get { throw null; } set { } }
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.AllProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.Interfaces)]
public System.Type OperandType { get { throw null; } }
public bool ParseLimitsInInvariantCulture { get { throw null; } set { } }
public override string FormatErrorMessage(string name) { throw null; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,16 @@ namespace System.ComponentModel.DataAnnotations
/// </summary>
public class AssociatedMetadataTypeTypeDescriptionProvider : TypeDescriptionProvider
{
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
internal const DynamicallyAccessedMemberTypes AllMembersAndInterfaces =
DynamicallyAccessedMemberTypes.AllConstructors |
DynamicallyAccessedMemberTypes.AllEvents |
DynamicallyAccessedMemberTypes.AllFields |
DynamicallyAccessedMemberTypes.AllMethods |
DynamicallyAccessedMemberTypes.AllNestedTypes |
DynamicallyAccessedMemberTypes.AllProperties |
DynamicallyAccessedMemberTypes.Interfaces;

[DynamicallyAccessedMembers(AllMembersAndInterfaces)]
private readonly Type? _associatedMetadataType;

/// <summary>
Expand All @@ -33,7 +42,7 @@ public AssociatedMetadataTypeTypeDescriptionProvider(Type type)
/// <exception cref="System.ArgumentNullException">The value of associatedMetadataType is null.</exception>
public AssociatedMetadataTypeTypeDescriptionProvider(
Type type,
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type associatedMetadataType)
[DynamicallyAccessedMembers(AllMembersAndInterfaces)] Type associatedMetadataType)
: this(type)
{
ArgumentNullException.ThrowIfNull(associatedMetadataType);
Expand All @@ -47,7 +56,7 @@ public AssociatedMetadataTypeTypeDescriptionProvider(
/// <param name="objectType">The type of object to retrieve the type descriptor for.</param>
/// <param name="instance">An instance of the type.</param>
/// <returns>The descriptor that provides metadata for the type.</returns>
public override ICustomTypeDescriptor GetTypeDescriptor([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type objectType, object? instance)
public override ICustomTypeDescriptor GetTypeDescriptor([DynamicallyAccessedMembers(AllMembersAndInterfaces)] Type objectType, object? instance)
{
ICustomTypeDescriptor? baseDescriptor = base.GetTypeDescriptor(objectType, instance);
return new AssociatedMetadataTypeTypeDescriptor(baseDescriptor, objectType, _associatedMetadataType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ namespace System.ComponentModel.DataAnnotations
{
internal sealed class AssociatedMetadataTypeTypeDescriptor : CustomTypeDescriptor
{
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
[DynamicallyAccessedMembers(AssociatedMetadataTypeTypeDescriptionProvider.AllMembersAndInterfaces)]
private Type? AssociatedMetadataType { get; set; }

private bool IsSelfAssociated { get; set; }

public AssociatedMetadataTypeTypeDescriptor(
ICustomTypeDescriptor? parent,
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] Type type,
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type? associatedMetadataType)
[DynamicallyAccessedMembers(AssociatedMetadataTypeTypeDescriptionProvider.AllMembersAndInterfaces)] Type? associatedMetadataType)
: base(parent)
{
AssociatedMetadataType = associatedMetadataType ?? TypeDescriptorCache.GetAssociatedMetadataType(type);
Expand Down Expand Up @@ -113,7 +113,7 @@ public static void ValidateMetadataType(
}
}

[return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
[return: DynamicallyAccessedMembers(AssociatedMetadataTypeTypeDescriptionProvider.AllMembersAndInterfaces)]
public static Type? GetAssociatedMetadataType(Type type)
{
if (TryGetAssociatedMetadataTypeFromCache(type, out Type? associatedMetadataType))
Expand All @@ -135,7 +135,7 @@ public static void ValidateMetadataType(
"have annotation All (since we only ever add attribute.MetadataClassType which has All)." +
"But the call to TryGetValue doesn't carry the annotation so this warns when trying" +
"to assign to the out parameter.")]
static bool TryGetAssociatedMetadataTypeFromCache(Type type, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] out Type? associatedMetadataType)
static bool TryGetAssociatedMetadataTypeFromCache(Type type, [DynamicallyAccessedMembers(AssociatedMetadataTypeTypeDescriptionProvider.AllMembersAndInterfaces)] out Type? associatedMetadataType)
{
return s_metadataTypeCache.TryGetValue(type, out associatedMetadataType);
}
Expand Down Expand Up @@ -166,7 +166,7 @@ private static void CheckAssociatedMetadataType(
}

public static Attribute[] GetAssociatedMetadata(
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type,
[DynamicallyAccessedMembers(AssociatedMetadataTypeTypeDescriptionProvider.AllMembersAndInterfaces)] Type type,
string memberName)
{
(Type, string) memberTuple = (type, memberName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace System.ComponentModel.DataAnnotations
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public sealed class MetadataTypeAttribute : Attribute
{
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
[DynamicallyAccessedMembers(AssociatedMetadataTypeTypeDescriptionProvider.AllMembersAndInterfaces)]
private readonly Type _metadataClassType;

/// <summary>
Expand All @@ -21,15 +21,15 @@ public sealed class MetadataTypeAttribute : Attribute
/// </summary>
/// <param name="metadataClassType">The metadata class to reference.</param>
/// <exception cref="System.ArgumentNullException">metadataClassType is null.</exception>
public MetadataTypeAttribute([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type metadataClassType)
public MetadataTypeAttribute([DynamicallyAccessedMembers(AssociatedMetadataTypeTypeDescriptionProvider.AllMembersAndInterfaces)] Type metadataClassType)
{
_metadataClassType = metadataClassType;
}

/// <summary>
/// Gets the metadata class that is associated with a data-model partial class.
/// </summary>
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
[DynamicallyAccessedMembers(AssociatedMetadataTypeTypeDescriptionProvider.AllMembersAndInterfaces)]
public Type MetadataClassType
{
get
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public RangeAttribute(double minimum, double maximum)
/// <param name="maximum">The maximum allowable value.</param>
[RequiresUnreferencedCode("Generic TypeConverters may require the generic types to be annotated. For example, NullableConverter requires the underlying type to be DynamicallyAccessedMembers All.")]
public RangeAttribute(
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type type,
[DynamicallyAccessedMembers(AssociatedMetadataTypeTypeDescriptionProvider.AllMembersAndInterfaces)] Type type,
string minimum,
string maximum)
: base(populateErrorMessageResourceAccessor: false)
Expand Down Expand Up @@ -85,7 +85,7 @@ public RangeAttribute(
/// Gets the type of the <see cref="Minimum" /> and <see cref="Maximum" /> values (e.g. Int32, Double, or some custom
/// type)
/// </summary>
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
[DynamicallyAccessedMembers(AssociatedMetadataTypeTypeDescriptionProvider.AllMembersAndInterfaces)]
public Type OperandType { get; }

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ internal StoreItem(AttributeCollection attributes)
/// </summary>
private sealed class TypeStoreItem : StoreItem
{
internal const DynamicallyAccessedMemberTypes DynamicallyAccessedTypes = DynamicallyAccessedMemberTypes.All;
internal const DynamicallyAccessedMemberTypes DynamicallyAccessedTypes = AssociatedMetadataTypeTypeDescriptionProvider.AllMembersAndInterfaces;

private readonly object _syncRoot = new object();
[DynamicallyAccessedMembers(DynamicallyAccessedTypes)]
Expand Down
Loading
Loading