我工作的业务是在线零售商,我目前正在开展一个项目,其中包括计算产品的客户价格。我们可能会创建一个类似于......的服务。
public interface IPriceService
{
decimal CalculateCustomerPrice(ISupplierPriceProvider product);
}
public interface ISupplierPriceProvider
{
decimal SupplierPrice { get; }
string Currency { get; }
}
不要担心它看起来不会那样,但你会得到一般的想法。在我们实现这项服务的过程中,会有很多计算这个价格的规则,这些规则可能经常发生变化,我们可能想要做的事情就是为这些规则创建某种DSL。目前虽然我们不太确定销售部门实际会要求哪些更改等等,所以我正在考虑托管DLR并拥有包含大量价格计算的Iron Python或Iron Ruby脚本文件。通过这种方式,我们可以快速更新价格计算规则,并了解商务人士所需的DSL类型。这听起来像是一个理智的想法,还有没有人有关于如何托管DLR和让脚本文件与CLR对象交互并返回值的链接文章/教程?
答案 0 :(得分:1)
对我来说,这绝对听起来像是一个理智的主意。您可以从IronPython中轻松访问CLR内部(对象和返回值),我不知道IronRuby。 IronPython in Action的第1章和第7章可在线获取,可能会有所帮助。 learning python博客上还有一个“hello world”风格教程。