Я новичок в Func/Action/Predicate и хочу знать, как лучше всего реорганизовать мой код, поскольку у меня потенциально будет много повторяющегося кода.Как реорганизовать несколько расширений с разными параметрами Func с одинаковым результатом
Я создал 2 методы расширения, которые принимают параметр Func (всегда возвращаются BOOL):
public static void MyExtension<T>(this T obj, Func<T, bool> predicate)
{
do
{
//function code
} while (predicate(obj));
}
public static void MyExtension<T1, T2>(this T1 obj, T2 OtherObject, Func<T1, T2, bool> predicate)
{
do
{
//function code
} while (predicate(obj, OtherObject));
}
То, что я хочу, это только код Д.О./время цикла один раз, как я мог бы иметь много функций который будет генерировать только другой Func, но все захотят запустить тот же цикл do/while.
Я думал что-то вроде этого, которое принимает любой параметр Func и запускает его в каждом цикле. Код в цикле не заботится о типах, переданных в Func.
public static void DoLoop(Func predicate)
{
do
{
//function code
} while (predicate);
}
Но это явно не работает. Кто-нибудь знает, как это решить, или я делаю что-то принципиально неправильное?
Конечный результат, я хочу, чтобы вызвать код, как показано ниже:
var Obj = new MyObj();
Obj.MyExtension((x) => x.Prop1.Contains("string"));
var OtherObj = new MyObj();
Obj.MyExtension(OtherObj, (x,y) => x.Prop1.Contains("string") && y.Prop1.Contains("other"));
Спасибо.
безупречный! Благодарю. для его работы необходимо небольшое изменение. Необходимо изменить} while (предикат); to} while (предикат()); – Danhol86