Я хотел бы управлять правилами, которые должны быть проверены с помощью NRULE в базе данных, и прочитать их динамически. Поэтому мне нужно определение правила в формате JSON.
Для целей тестирования я использовал следующий пример на домашней странице NRULES в «Начало работы», которая использует метод LINQ «Count»: < /p>
public class TrafficViolationSurchargeRule : Rule
{
public override void Define()
{
InsuranceQuote quote = default!;
IEnumerable violations = default!;
int totalViolations = 0;
When()
.Match(() => quote)
.Query(() => violations, q => q
.Match()
.Where(v => v.Driver == quote.Driver,
v => v.ViolationType != "Parking",
v => v.Date >= DateTime.Now.AddYears(-2))
.Collect())
.Let(() => totalViolations, () => violations.Count())
.Having(() => totalViolations > 1);
Then()
.Do(ctx => quote.ApplySurcharge(20 * totalViolations));
}
}
< /code>
serializing вышеупомянутое правило в формате JSON работает без каких -либо проблем и создает следующий вывод: < /p>
{
"name": "Rules.TrafficViolationSurchargeRule",
"properties": [
{
"name": "Fluent::ClrType",
"type": "System.Type",
"value": "Rules.TrafficViolationSurchargeRule, Rules, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}
],
"leftHandSide": {
"elementType": "And",
"childElements": [
{
"elementType": "Pattern",
"name": "quote",
"type": "Domain.InsuranceQuote, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
},
{
"elementType": "Pattern",
"name": "violations",
"type": "System.Collections.Generic.IEnumerable\u00601[[Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]",
"source": {
"elementType": "Aggregate",
"name": "Collect",
"resultType": "System.Collections.Generic.IEnumerable\u00601[[Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]",
"source": {
"elementType": "Pattern",
"name": "$this$",
"type": "Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"expressions": [
{
"name": "Condition",
"expression": {
"nodeType": "Lambda",
"parameters": [
{
"name": "$this$",
"type": "Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
},
{
"name": "quote",
"type": "Domain.InsuranceQuote, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}
],
"body": {
"nodeType": "Equal",
"left": {
"nodeType": "MemberAccess",
"memberType": "Property",
"name": "Driver",
"declaringType": "Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"expression": {
"nodeType": "Parameter",
"name": "$this$",
"type": "Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}
},
"right": {
"nodeType": "MemberAccess",
"memberType": "Property",
"name": "Driver",
"declaringType": "Domain.InsuranceQuote, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"expression": {
"nodeType": "Parameter",
"name": "quote",
"type": "Domain.InsuranceQuote, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}
}
}
}
},
{
"name": "Condition",
"expression": {
"nodeType": "Lambda",
"parameters": [
{
"name": "$this$",
"type": "Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}
],
"body": {
"nodeType": "NotEqual",
"left": {
"nodeType": "MemberAccess",
"memberType": "Property",
"name": "ViolationType",
"declaringType": "Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"expression": {
"nodeType": "Parameter",
"name": "$this$",
"type": "Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}
},
"right": {
"nodeType": "Constant",
"type": "string",
"value": "Parking"
}
}
}
},
{
"name": "Condition",
"expression": {
"nodeType": "Lambda",
"parameters": [
{
"name": "$this$",
"type": "Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}
],
"body": {
"nodeType": "GreaterThanOrEqual",
"left": {
"nodeType": "MemberAccess",
"memberType": "Property",
"name": "Date",
"declaringType": "Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"expression": {
"nodeType": "Parameter",
"name": "$this$",
"type": "Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}
},
"right": {
"nodeType": "Call",
"object": {
"nodeType": "MemberAccess",
"memberType": "Property",
"name": "Now",
"declaringType": "System.DateTime"
},
"methodName": "AddYears",
"arguments": [
{
"nodeType": "Constant",
"type": "int",
"value": -2
}
]
}
}
}
}
]
}
}
},
{
"elementType": "Pattern",
"name": "totalViolations",
"type": "int",
"expressions": [
{
"name": "Condition",
"expression": {
"nodeType": "Lambda",
"parameters": [
{
"name": "totalViolations",
"type": "int"
}
],
"body": {
"nodeType": "GreaterThan",
"left": {
"nodeType": "Parameter",
"name": "totalViolations",
"type": "int"
},
"right": {
"nodeType": "Constant",
"type": "int",
"value": 1
}
}
}
}
],
"source": {
"elementType": "Binding",
"resultType": "int",
"expression": {
"nodeType": "Lambda",
"parameters": [
{
"name": "violations",
"type": "System.Collections.Generic.IEnumerable\u00601[[Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
}
],
"body": {
"nodeType": "Call",
"methodName": "Count",
"declaringType": "System.Linq.Enumerable, System.Linq, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
"arguments": [
{
"nodeType": "Parameter",
"name": "violations",
"type": "System.Collections.Generic.IEnumerable\u00601[[Domain.TrafficViolation, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
}
]
}
}
}
}
]
},
"rightHandSide": [
{
"expression": {
"nodeType": "Lambda",
"parameters": [
{
"name": "ctx",
"type": "NRules.RuleModel.IContext, NRules.RuleModel, Version=1.0.2.0, Culture=neutral, PublicKeyToken=8ad544355a4a2176"
},
{
"name": "quote",
"type": "Domain.InsuranceQuote, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
},
{
"name": "totalViolations",
"type": "int"
}
],
"body": {
"nodeType": "Call",
"object": {
"nodeType": "Parameter",
"name": "quote",
"type": "Domain.InsuranceQuote, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
},
"methodName": "ApplySurcharge",
"arguments": [
{
"nodeType": "Convert",
"operand": {
"nodeType": "Multiply",
"left": {
"nodeType": "Constant",
"type": "int",
"value": 20
},
"right": {
"nodeType": "Parameter",
"name": "totalViolations",
"type": "int"
}
},
"type": "decimal"
}
]
}
}
}
]
}
< /code>
Сохраните этот json в файле, добавьте файл в проект и десериализуйте его со следующим кодом: < /p>
using NRules.Json;
using NRules.RuleModel;
using System.Text.Json;
var options = new JsonSerializerOptions
{
WriteIndented = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
};
RuleSerializer.Setup(options);
string text = File.ReadAllText("file.json");
JsonSerializer.Deserialize(text, options);
< /code>
Вы получаете следующую ошибку в «getmethod» в классе «Memberextensions», что метод «count» в «System.linq.enumerable» не может быть найдена: < /p>
System.ArgumentException
HResult=0x80070057
Nachricht = Unknown method. DeclaringType=System.Linq.Enumerable, Name=Count
Quelle = NRules.Json
Stapelüberwachung:
bei NRules.Json.Converters.MemberExtensions.GetMethod(MethodRecord methodRecord, Type[] argumentTypes, Type impliedType) in /_/src/NRules/NRules.Json/Converters/MemberExtensions.cs: Zeile85
bei NRules.Json.Converters.ExpressionConverter.ReadMethodCall(Utf8JsonReader& reader, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/ExpressionConverter.cs: Zeile226
bei NRules.Json.Converters.ExpressionConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/ExpressionConverter.cs: Zeile32
bei System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
bei System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state)
bei System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state)
bei System.Text.Json.JsonSerializer.Read[TValue](Utf8JsonReader& reader, JsonTypeInfo`1 jsonTypeInfo)
bei NRules.Json.Utilities.JsonExtensions.ReadProperty[TElement](Utf8JsonReader& reader, String name, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Utilities/JsonExtensions.cs: Zeile250
bei NRules.Json.Converters.ExpressionConverter.ReadLambda(Utf8JsonReader& reader, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/ExpressionConverter.cs: Zeile156
bei NRules.Json.Converters.ExpressionConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/ExpressionConverter.cs: Zeile24
bei System.Text.Json.Serialization.JsonConverter`1.ReadAsObject(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options)
bei System.Text.Json.Serialization.Converters.CastingConverter`1.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options)
bei System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
bei System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state)
bei System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state)
bei System.Text.Json.JsonSerializer.Read[TValue](Utf8JsonReader& reader, JsonTypeInfo`1 jsonTypeInfo)
bei NRules.Json.Utilities.JsonExtensions.ReadProperty[TElement](Utf8JsonReader& reader, String name, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Utilities/JsonExtensions.cs: Zeile250
bei NRules.Json.Converters.RuleElementConverter.ReadBinding(Utf8JsonReader& reader, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/RuleElementConverter.cs: Zeile150
bei NRules.Json.Converters.RuleElementConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/RuleElementConverter.cs: Zeile35
bei System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
bei System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state)
bei System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state)
bei System.Text.Json.JsonSerializer.Read[TValue](Utf8JsonReader& reader, JsonTypeInfo`1 jsonTypeInfo)
bei NRules.Json.Utilities.JsonExtensions.TryReadProperty[TElement](Utf8JsonReader& reader, String name, JsonSerializerOptions options, TElement& value) in /_/src/NRules/NRules.Json/Utilities/JsonExtensions.cs: Zeile274
bei NRules.Json.Converters.RuleElementConverter.ReadPattern(Utf8JsonReader& reader, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/RuleElementConverter.cs: Zeile165
bei NRules.Json.Converters.RuleElementConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/RuleElementConverter.cs: Zeile37
bei System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
bei System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state)
bei System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state)
bei System.Text.Json.JsonSerializer.Read[TValue](Utf8JsonReader& reader, JsonTypeInfo`1 jsonTypeInfo)
bei NRules.Json.Utilities.JsonExtensions.ReadArray[TElement](Utf8JsonReader& reader, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Utilities/JsonExtensions.cs: Zeile226
bei NRules.Json.Utilities.JsonExtensions.ReadArrayProperty[TElement](Utf8JsonReader& reader, String name, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Utilities/JsonExtensions.cs: Zeile183
bei NRules.Json.Converters.RuleElementConverter.ReadGroup(Utf8JsonReader& reader, JsonSerializerOptions options, GroupType groupType) in /_/src/NRules/NRules.Json/Converters/RuleElementConverter.cs: Zeile92
bei NRules.Json.Converters.RuleElementConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/RuleElementConverter.cs: Zeile25
bei System.Text.Json.Serialization.JsonConverter`1.ReadAsObject(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options)
bei System.Text.Json.Serialization.Converters.CastingConverter`1.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options)
bei System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
bei System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state)
bei System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state)
bei System.Text.Json.JsonSerializer.Read[TValue](Utf8JsonReader& reader, JsonTypeInfo`1 jsonTypeInfo)
bei NRules.Json.Utilities.JsonExtensions.ReadProperty[TElement](Utf8JsonReader& reader, String name, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Utilities/JsonExtensions.cs: Zeile250
bei NRules.Json.Converters.RuleDefinitionConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/RuleDefinitionConverter.cs: Zeile27
bei System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
bei System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state)
bei System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state)
bei System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 utf8Json, JsonTypeInfo`1 jsonTypeInfo, Nullable`1 actualByteCount)
bei System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 json, JsonTypeInfo`1 jsonTypeInfo)
bei System.Text.Json.JsonSerializer.Deserialize[TValue](String json, JsonSerializerOptions options)
Это потому, что метод является методом расширения и не может быть найдена посредством отражения с текущей реализацией в «nrules.json.converters.memberextensions».>
Я хотел бы управлять правилами, которые должны быть проверены с помощью NRULE в базе данных, и прочитать их динамически. Поэтому мне нужно определение правила в формате JSON. Для целей тестирования я использовал следующий пример на домашней странице NRULES в «Начало работы», которая использует метод LINQ «Count»: < /p> [code]public class TrafficViolationSurchargeRule : Rule { public override void Define() { InsuranceQuote quote = default!; IEnumerable violations = default!; int totalViolations = 0;
var options = new JsonSerializerOptions { WriteIndented = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, };
RuleSerializer.Setup(options);
string text = File.ReadAllText("file.json"); JsonSerializer.Deserialize(text, options); < /code> Вы получаете следующую ошибку в «getmethod» в классе «Memberextensions», что метод «count» в «System.linq.enumerable» не может быть найдена: < /p> System.ArgumentException HResult=0x80070057 Nachricht = Unknown method. DeclaringType=System.Linq.Enumerable, Name=Count Quelle = NRules.Json Stapelüberwachung: bei NRules.Json.Converters.MemberExtensions.GetMethod(MethodRecord methodRecord, Type[] argumentTypes, Type impliedType) in /_/src/NRules/NRules.Json/Converters/MemberExtensions.cs: Zeile85 bei NRules.Json.Converters.ExpressionConverter.ReadMethodCall(Utf8JsonReader& reader, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/ExpressionConverter.cs: Zeile226 bei NRules.Json.Converters.ExpressionConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/ExpressionConverter.cs: Zeile32 bei System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue) bei System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state) bei System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state) bei System.Text.Json.JsonSerializer.Read[TValue](Utf8JsonReader& reader, JsonTypeInfo`1 jsonTypeInfo) bei NRules.Json.Utilities.JsonExtensions.ReadProperty[TElement](Utf8JsonReader& reader, String name, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Utilities/JsonExtensions.cs: Zeile250 bei NRules.Json.Converters.ExpressionConverter.ReadLambda(Utf8JsonReader& reader, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/ExpressionConverter.cs: Zeile156 bei NRules.Json.Converters.ExpressionConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/ExpressionConverter.cs: Zeile24 bei System.Text.Json.Serialization.JsonConverter`1.ReadAsObject(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) bei System.Text.Json.Serialization.Converters.CastingConverter`1.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) bei System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue) bei System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state) bei System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state) bei System.Text.Json.JsonSerializer.Read[TValue](Utf8JsonReader& reader, JsonTypeInfo`1 jsonTypeInfo) bei NRules.Json.Utilities.JsonExtensions.ReadProperty[TElement](Utf8JsonReader& reader, String name, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Utilities/JsonExtensions.cs: Zeile250 bei NRules.Json.Converters.RuleElementConverter.ReadBinding(Utf8JsonReader& reader, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/RuleElementConverter.cs: Zeile150 bei NRules.Json.Converters.RuleElementConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/RuleElementConverter.cs: Zeile35 bei System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue) bei System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state) bei System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state) bei System.Text.Json.JsonSerializer.Read[TValue](Utf8JsonReader& reader, JsonTypeInfo`1 jsonTypeInfo) bei NRules.Json.Utilities.JsonExtensions.TryReadProperty[TElement](Utf8JsonReader& reader, String name, JsonSerializerOptions options, TElement& value) in /_/src/NRules/NRules.Json/Utilities/JsonExtensions.cs: Zeile274 bei NRules.Json.Converters.RuleElementConverter.ReadPattern(Utf8JsonReader& reader, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/RuleElementConverter.cs: Zeile165 bei NRules.Json.Converters.RuleElementConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/RuleElementConverter.cs: Zeile37 bei System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue) bei System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state) bei System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state) bei System.Text.Json.JsonSerializer.Read[TValue](Utf8JsonReader& reader, JsonTypeInfo`1 jsonTypeInfo) bei NRules.Json.Utilities.JsonExtensions.ReadArray[TElement](Utf8JsonReader& reader, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Utilities/JsonExtensions.cs: Zeile226 bei NRules.Json.Utilities.JsonExtensions.ReadArrayProperty[TElement](Utf8JsonReader& reader, String name, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Utilities/JsonExtensions.cs: Zeile183 bei NRules.Json.Converters.RuleElementConverter.ReadGroup(Utf8JsonReader& reader, JsonSerializerOptions options, GroupType groupType) in /_/src/NRules/NRules.Json/Converters/RuleElementConverter.cs: Zeile92 bei NRules.Json.Converters.RuleElementConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/RuleElementConverter.cs: Zeile25 bei System.Text.Json.Serialization.JsonConverter`1.ReadAsObject(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) bei System.Text.Json.Serialization.Converters.CastingConverter`1.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) bei System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue) bei System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state) bei System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state) bei System.Text.Json.JsonSerializer.Read[TValue](Utf8JsonReader& reader, JsonTypeInfo`1 jsonTypeInfo) bei NRules.Json.Utilities.JsonExtensions.ReadProperty[TElement](Utf8JsonReader& reader, String name, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Utilities/JsonExtensions.cs: Zeile250 bei NRules.Json.Converters.RuleDefinitionConverter.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in /_/src/NRules/NRules.Json/Converters/RuleDefinitionConverter.cs: Zeile27 bei System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue) bei System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state) bei System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state) bei System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 utf8Json, JsonTypeInfo`1 jsonTypeInfo, Nullable`1 actualByteCount) bei System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 json, JsonTypeInfo`1 jsonTypeInfo) bei System.Text.Json.JsonSerializer.Deserialize[TValue](String json, JsonSerializerOptions options) [/code] Это потому, что метод является методом расширения и не может быть найдена посредством отражения с текущей реализацией в «nrules.json.converters.memberextensions».>