Parameter Ich habe die folgende FunktionVergleichen 2 Listen, die Selektoren Angabe als
public static class ListUtils
{
public static bool ListsHaveCommonality<T>(List<T> listOne, List<T> listTwo, Func<T, string> selectorOne, Func<T, string> selectorTwo)
{
return listOne.Select(selectorOne).Intersect(listTwo.Select(selectorTwo)).Any();
}
}
Dann wird ein Test zu überprüfen, es
//Arrange
List<Alias> aliases = new List<Alias>();
Alias a1 = new Alias { alias = "[email protected]" };
Alias a2 = new Alias { alias = "[email protected]" };
Alias a3 = new Alias { alias = "[email protected]" };
aliases.Add(a1);
aliases.Add(a2);
aliases.Add(a3);
List<string> chosenAliases = new List<string>
{
"[email protected]",
"[email protected]",
};
//Act
bool hasCommonality = ListUtils.ListsHaveCommonality(aliases, chosenAliases, (Alias a) => a.alias, (string s) => s);
//Assert
Assert.IsTrue(hasCommonality);
arbeitet I
Die Art Argumente der folgenden Fehler angezeigt für Methode System.Func, System.Func) kann nicht aus der Verwendung abgeleitet werden. Versuchen Sie, die Typargumente explizit anzugeben.
'ListsHaveCommonality' geht davon aus, dass beide Listen den gleichen Typparameter' T' haben. –
Oh ja. Das hat mir geholfen, es zu korrigieren 'öffentliche statische bool ListsHaveCommonality (Liste listOne, Liste listTwo, Func selectorOne, Func selectorTwo)' –
user2436996