in src/PSRule.Rules.Azure/Data/Policy/PolicyAssignmentVisitor.cs [859:882]
private static bool ParametersEqual(PolicyAssignmentContext context, IParameterValue paramA, IParameterValue paramB)
{
var typeA = paramA.Type;
var typeB = paramB.Type;
var valueA = paramA.GetValue(context);
var valueB = paramB.GetValue(context);
if (typeA == ParameterType.String && typeB == ParameterType.String)
return valueA.ToString().Equals(valueB.ToString(), StringComparison.OrdinalIgnoreCase);
if (typeA == ParameterType.Integer && typeB == ParameterType.Integer)
return Convert.ToInt64(valueA, Thread.CurrentThread.CurrentCulture) == Convert.ToInt64(valueB, Thread.CurrentThread.CurrentCulture);
if (typeA == ParameterType.Boolean && typeB == ParameterType.Boolean)
return Convert.ToBoolean(valueA, Thread.CurrentThread.CurrentCulture) == Convert.ToBoolean(valueB, Thread.CurrentThread.CurrentCulture);
if (typeA == ParameterType.Array && typeB == ParameterType.Array)
return JToken.DeepEquals(JArray.FromObject(valueA), JArray.FromObject(valueB));
if (typeA == ParameterType.Object && typeB == ParameterType.Object)
return JToken.DeepEquals(JObject.FromObject(valueA), JObject.FromObject(valueB));
return true;
}