У меня есть метод, который изменяет объект "Учетная запись" на основе переданного ему делегата действия:
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 script, где пользователь может указать lambda-выражение для выполнения изменений.)