ComparisonEvaluationResult
Inhalt
[
Ausblenden
]ComparisonEvaluationResult class
Das Ergebnis der Vergleichsauswertung.
Um mehr zu erfahren, besuchen Sie dieArbeiten mit Feldern Dokumentationsartikel.
public sealed class ComparisonEvaluationResult
Konstrukteure
Name | Beschreibung |
---|---|
ComparisonEvaluationResult(bool) | Erstellt ein Vergleichsauswertungsergebnis. |
ComparisonEvaluationResult(string) | Erstellt ein fehlgeschlagenes Vergleichsauswertungsergebnis mit der entsprechenden Fehlermeldung. |
Eigenschaften
Name | Beschreibung |
---|---|
ErrorMessage { get; } | Ruft die Fehlermeldung des Ergebnisses der fehlgeschlagenen Vergleichsauswertung ab. |
Result { get; } | Ruft das Ergebnis der Vergleichsauswertung ab. |
Beispiele
Zeigt, wie eine benutzerdefinierte Auswertung für die Felder IF und COMPARE implementiert wird.
public void ConditionEvaluationExtensionPoint(string fieldCode, sbyte comparisonResult, string comparisonError,
string expectedResult)
{
const string left = "\"left expression\"";
const string @operator = "<>";
const string right = "\"right expression\"";
DocumentBuilder builder = new DocumentBuilder();
// Feldcodes, die wir in diesem Beispiel verwenden:
// 1. " IF {0} {1} {2} \"wahres Argument\" \"falsches Argument\" ".
// 2. " COMPARE {0} {1} {2} ".
Field field = builder.InsertField(string.Format(fieldCode, left, @operator, right), null);
// Wenn „comparisonResult“ undefiniert ist, erstellen wir „ComparisonEvaluationResult“ mit einer Zeichenfolge anstelle von bool.
ComparisonEvaluationResult result = comparisonResult != -1
? new ComparisonEvaluationResult(comparisonResult == 1)
: comparisonError != null ? new ComparisonEvaluationResult(comparisonError) : null;
ComparisonExpressionEvaluator evaluator = new ComparisonExpressionEvaluator(result);
builder.Document.FieldOptions.ComparisonExpressionEvaluator = evaluator;
builder.Document.UpdateFields();
Assert.AreEqual(expectedResult, field.Result);
evaluator.AssertInvocationsCount(1).AssertInvocationArguments(0, left, @operator, right);
}
/// <summary>
/// Auswertung der Vergleichsausdrücke für FieldIf und FieldCompare.
/// </summary>
private class ComparisonExpressionEvaluator : IComparisonExpressionEvaluator
{
public ComparisonExpressionEvaluator(ComparisonEvaluationResult result)
{
mResult = result;
}
public ComparisonEvaluationResult Evaluate(Field field, ComparisonExpression expression)
{
mInvocations.Add(new[]
{
expression.LeftExpression,
expression.ComparisonOperator,
expression.RightExpression
});
return mResult;
}
public ComparisonExpressionEvaluator AssertInvocationsCount(int expected)
{
Assert.AreEqual(expected, mInvocations.Count);
return this;
}
public ComparisonExpressionEvaluator AssertInvocationArguments(
int invocationIndex,
string expectedLeftExpression,
string expectedComparisonOperator,
string expectedRightExpression)
{
string[] arguments = mInvocations[invocationIndex];
Assert.AreEqual(expectedLeftExpression, arguments[0]);
Assert.AreEqual(expectedComparisonOperator, arguments[1]);
Assert.AreEqual(expectedRightExpression, arguments[2]);
return this;
}
private readonly ComparisonEvaluationResult mResult;
private readonly List<string[]> mInvocations = new List<string[]>();
}
Siehe auch
- namensraum Aspose.Words.Fields
- Montage Aspose.Words