У меня есть этот метод, который принимает строку параметров [] пропустить.
public static void AssertEqualProperties(this object left, object right, params string[] skip)
{
Assert.NotNull(right, "Right compare object is null");
Assert.NotNull(left, "Left compare object is null");
var skipPropertyList = new List<string>(skip);
var leftProps = left.GetType().GetProperties();
var rightProps = right.GetType().GetProperties();
foreach (var leftProp in leftProps)
{
if (ignoredProps.Contains(leftProp.Name)) continue;
if (skipPropertyList.Contains(leftProp.Name)) continue;
var rightProp = rightProps.FirstOrDefault(p => p.Name == leftProp.Name);
if (rightProp == null) continue;
var l = leftProp.GetValue(left);
var r = rightProp.GetValue(right);
Assert.AreEqual(leftProp.GetValue(left), rightProp.GetValue(right),
$"Object property mismatch: {leftProp.Name} in object {left.GetType().Name}");
}
}
Идея состоит в том, что эти параметры являются необязательными и пропускаются в тесте.
Это мое свойство:
protected virtual List<string> CreateIgnoreProperties { get; set; } = new List<string>();
У меня есть метод, который преобразует из списка строк в массив строк:
public string[] ConvertStringArrtoParamArr(List<string> CreateIgnoreProperties)
{
var input = new List<string>();
foreach (var prop in CreateIgnoreProperties)
{
input.Add(prop);
}
string[] output = input.ToArray();
return output;
}
Я хочу указать CreatedParameter и этот список строк.
result.AssertEqualProperties(CreateEntity, nameof(IAuditEntity.CreatedAt), ConvertStringArrtoParamArr(CreateIgnoreProperties));
Когда я вызываю метод, хотя он говорит, не может преобразовать из строки [] в строку.
Потому что это обобщенно c Я не могу просто указать имя свойств, которые нужно игнорировать, 1 на 1.
Поэтому я пытаюсь использовать этот список logi c, где я могу пропустить и созданный объект, и свойства во всем списке. .