【发布时间】:2011-03-29 21:39:30
【问题描述】:
到目前为止的故事如下:
我正在做一个 C# winforms 应用程序,以方便指定设备以进行租用报价。
在其中,我有一个 List<T> 约 1500 件库存商品。
这些项目有一个名为AutospecQty 的属性,它有一个get 访问器,需要执行一些特定于每个项目的代码。此代码将引用列表中的其他各种项目。
因此,例如,一个项目(我们称之为Item0001)有这个get 访问器,它可能需要执行一些可能看起来像这样的代码:
[some code to get the following items from the list here]
if(Item0002.Value + Item0003.Value > Item0004.Value)
{ return Item0002.Value }
else
{ return Item0004.Value }
这一切都很好,但是这些代码可能每周都会发生变化,所以我尽量避免经常重新部署。此外,每个项目可能(将)具有完全不同的代码。有些会查询列表,有些会做一些很长的数学函数,有些会像上面一样简单添加......有些将取决于列表中不包含的变量。
我想做的是将每个项目的代码存储在我的数据库中的一个表中,然后当应用程序启动时,只需将相关代码拉出并将其放入一个列表中,准备在时间执行时执行来了。
我在互联网上看到的大多数关于将字符串作为代码执行的示例看起来都非常冗长、令人费解和/或对新手编码器不是特别友好(我是一个完全的业余爱好者),而且不要似乎考虑到被传递的变量。
所以问题是:
- 有没有更简单/更简单的方法来实现我想要做的事情?
- 如果 1=false(我猜是这种情况),是否值得为这种方法的所有潜在问题付出努力,或者我是否可以更好地花时间在应用程序中编写自动更新功能并保留它全部在主应用中(因此用户只需让应用每周更新一次)?
- 我的另一个(可能是坏的)想法是将所有 autospec 代码转移到一个单独的 DLL 中,或者只是在必要时重新部署它,或者甚至可以在共享网络驱动器上引用单个 DLL?
我想无论我走哪条路,这都是一个相当危险的领域。谁能告诉我,如果我打开一罐虫子,最好把它关好并真正关起来?
有没有更好的方法来处理整个事情?我有一个习惯,就是把我想要解决的事情复杂化:P
就像附加信息一样,autospec 代码不会是用户输入的。我每周都会更新它(没有其他人可以访问它),所以希望这至少可以缓解一些安全问题。
抱歉,如果我解释得不好。
提前致谢
【问题讨论】:
-
您是否考虑过使用 IronPython 等脚本语言进行计算?