У меня есть метод, который изменяет объект «Account» на основе переданного в него делегата действия:
public static void AlterAccount(string AccountID, Action<Account> AccountAction) {
Account someAccount = accountRepository.GetAccount(AccountID);
AccountAction.Invoke(someAccount);
someAccount.Save();
}
Это работает как задумано ...
AlterAccount("Account1234", a => a.Enabled = false);
... но теперь я хотел бы попробовать такой метод:
public static void AlterAccount(string AccountID, string AccountActionText) {
Account someAccount = accountRepository.GetAccount(AccountID);
Action<Account> AccountAction = MagicLibrary.ConvertMagically<Action<Account>>(AccountActionText);
AccountAction.Invoke(someAccount);
someAccount.Save();
}
Затем его можно использовать как:
AlterAccount("Account1234", "a => a.Enabled = false");
для отключения учетной записи «Account1234».
Я посмотрел на динамическую библиотеку запросов linq , которая, кажется, делает более или менее то, что я хочу, но для делегатов типа Func, и мои знания деревьев выражений и т. Д. Не очень хороши достаточно, чтобы понять, как добиться того, чего я хочу.
Есть ли простой способ сделать то, что я хочу, или мне нужно правильно выучить выражения и написать код?
(Причина, по которой я хочу это сделать, заключается в том, чтобы позволить простой способ массового обновления объектов учетной записи из сценария powershell, где пользователь может указать лямбда-выражение для выполнения изменений.)