我目前正在使用ASP.NET MVC3和Entity Framework 4.1 Code First开发一个应用程序,并且由于我才刚刚开始学习DDD,因此也尝试一点一点地应用DDD。

我有一个模型:

public class ClassA
{
    public decimal MonthlyRate { get; set; }
    public virtual decimal DailyRate
    {
       get { return this.MonthlyRate / 30; }
       private set { }
    }
}


现在,此代码有效,但是如果我在View上触发一个标志(将由用户检查该标志)以进行新的计算该怎么办。假设该标志不是将其除以30,而是将月率除以5。有什么建议吗?谢谢。

最佳答案

interface IDivideLogic
{
    int DivideNumber{get;set;}
}

class DivideLogic : IDivideLogic
{
    public DivideLogic()
    {
        DivideNumber = 30;
    }
    public DivideLogic(int divideNumber)
    {
        DivideNumber = divideNumber;
    }
    public int DivideNumber{get;set;}
}

public class ClassA
{
    public IDivideLogic DivideLogic {get;set;}
    public decimal MonthlyRate { get; set; }
    public virtual decimal DailyRate
    {
       get { return this.MonthlyRate / DivideLogic.DivideNumber; }
       private set { }
    }
}


然后您可以在需要时切换

ClassA obj = new ClassA();
obj.DivideLogic  = new DivideLogic(5);


这在更复杂的情况下效果很好。在您的情况下,它可能过于设计。希望你明白了

07-27 15:44