我有一个方法可以根据传递给它的操作委托更改“帐户”对象:
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 类型委托,我对表达式树等的了解还不够好,无法弄清楚如何实现我的目标想。
有没有一种简单的方法可以做我想做的事,还是我需要正确学习表达式并编写大量代码?
(我想这样做的原因是允许从用户可以指定 lambda 表达式来执行更改的 powershell 脚本批量更新帐户对象的简单方法。)