我有一个方法,根据传递给它的动作委托改变"帐户"对象:
public static void AlterAccount(string AccountID, ActionAccountAction) { 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); ActionAccountAction = MagicLibrary.ConvertMagically >(AccountActionText); AccountAction.Invoke(someAccount); someAccount.Save(); }
它可以像以下一样使用:
AlterAccount("Account1234", "a => a.Enabled = false");
禁用帐户"Account1234".
我已经看过linq动态查询库了,它似乎或多或少地做了我想要的但是对于Func类型的委托,而我对表达式树等的了解并不是很好来弄清楚如何实现我的目标想.
有没有一种简单的方法可以做我想要的,或者我是否需要正确学习表达式并编写大量代码?
(我想这样做的原因是允许从powershell脚本中批量更新帐户对象的简单方法,其中用户可以指定lambda表达式来执行更改.)