diff --git a/QRCoder/PayloadGenerator.cs b/QRCoder/PayloadGenerator.cs index bddd084b..6266e0c7 100644 --- a/QRCoder/PayloadGenerator.cs +++ b/QRCoder/PayloadGenerator.cs @@ -1,5 +1,8 @@ using System; using System.Collections.Generic; +#if NET6_0_OR_GREATER +using System.Diagnostics.CodeAnalysis; +#endif using System.Linq; using System.Globalization; using System.Text; @@ -2479,6 +2482,12 @@ public class RussiaPaymentOrder : Payload private CharacterSets characterSet; private MandatoryFields mFields; private OptionalFields oFields; +#if NET6_0_OR_GREATER + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] + private Type _mFields => typeof(MandatoryFields); + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] + private Type _oFields => typeof(OptionalFields); +#endif private string separator = "|"; private RussiaPaymentOrder() @@ -2605,7 +2614,12 @@ private List GetOptionalFieldsAsList() }) .ToList(); #else - return oFields.GetType().GetProperties() +#if NET6_0_OR_GREATER + return _oFields +#else + return oFields.GetType() +#endif + .GetProperties() .Where(field => field.GetValue(oFields, null) != null) .Select(field => { var objValue = field.GetValue(oFields, null); @@ -2621,7 +2635,7 @@ private List GetOptionalFieldsAsList() /// Takes all mandatory fields that are not null and returns their string represantion /// /// A List of strings - private List GetMandatoryFieldsAsList() + private List GetMandatoryFieldsAsList() { #if NETSTANDARD1_3 return mFields.GetType().GetRuntimeFields() @@ -2633,7 +2647,12 @@ private List GetMandatoryFieldsAsList() }) .ToList(); #else - return mFields.GetType().GetFields() +#if NET6_0_OR_GREATER + return _mFields +#else + return mFields.GetType() +#endif + .GetFields() .Where(field => field.GetValue(mFields) != null) .Select(field => { var objValue = field.GetValue(mFields);