LinkerFlags.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics.CodeAnalysis;
  4. namespace FastReport.Web
  5. {
  6. internal static class LinkerFlags
  7. {
  8. internal const DynamicallyAccessedMemberTypes ExportTypeMembers = DynamicallyAccessedMemberTypes.PublicParameterlessConstructor
  9. | DynamicallyAccessedMemberTypes.PublicProperties;
  10. internal const DynamicallyAccessedMemberTypes All = DynamicallyAccessedMemberTypes.All;
  11. }
  12. #if !NET5_0_OR_GREATER
  13. [AttributeUsage(
  14. AttributeTargets.Field | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter |
  15. AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Method |
  16. AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Struct,
  17. Inherited = false)]
  18. internal sealed class DynamicallyAccessedMembersAttribute : Attribute
  19. {
  20. /// <summary>
  21. /// Initializes a new instance of the <see cref="DynamicallyAccessedMembersAttribute"/> class
  22. /// with the specified member types.
  23. /// </summary>
  24. /// <param name="memberTypes">The types of members dynamically accessed.</param>
  25. public DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes memberTypes)
  26. {
  27. }
  28. }
  29. //
  30. // Summary:
  31. // Specifies the types of members that are dynamically accessed. This enumeration
  32. // has a System.FlagsAttribute attribute that allows a bitwise combination of its
  33. // member values.
  34. [Flags]
  35. internal enum DynamicallyAccessedMemberTypes
  36. {
  37. //
  38. // Summary:
  39. // Specifies all members.
  40. All = -1,
  41. //
  42. // Summary:
  43. // Specifies no members.
  44. None = 0,
  45. //
  46. // Summary:
  47. // Specifies the default, parameterless public constructor.
  48. PublicParameterlessConstructor = 1,
  49. //
  50. // Summary:
  51. // Specifies all public constructors.
  52. PublicConstructors = 3,
  53. //
  54. // Summary:
  55. // Specifies all non-public constructors.
  56. NonPublicConstructors = 4,
  57. //
  58. // Summary:
  59. // Specifies all public methods.
  60. PublicMethods = 8,
  61. //
  62. // Summary:
  63. // Specifies all non-public methods.
  64. NonPublicMethods = 16,
  65. //
  66. // Summary:
  67. // Specifies all public fields.
  68. PublicFields = 32,
  69. //
  70. // Summary:
  71. // Specifies all non-public fields.
  72. NonPublicFields = 64,
  73. //
  74. // Summary:
  75. // Specifies all public nested types.
  76. PublicNestedTypes = 128,
  77. //
  78. // Summary:
  79. // Specifies all non-public nested types.
  80. NonPublicNestedTypes = 256,
  81. //
  82. // Summary:
  83. // Specifies all public properties.
  84. PublicProperties = 512,
  85. //
  86. // Summary:
  87. // Specifies all non-public properties.
  88. NonPublicProperties = 1024,
  89. //
  90. // Summary:
  91. // Specifies all public events.
  92. PublicEvents = 2048,
  93. //
  94. // Summary:
  95. // Specifies all non-public events.
  96. NonPublicEvents = 4096,
  97. //
  98. // Summary:
  99. // Specifies all interfaces implemented by the type.
  100. Interfaces = 8192
  101. }
  102. #endif
  103. }