将类设置为另一个单独的类

时间:2017-09-19 23:16:15

标签: c# class properties nullreferenceexception

对于我的项目,我有几个课程。其中两个课程我想以下列方式联系在一起: 它是一个基本的预算申请。

public class Car
{ 
    public int Insurance { get; set; }
    public int Gas { get; set; }
}

public class Budget
{ 
    public Car CarProperty { get; set; }
    public Budget()
    {
        CarProperty = new Car();
    } 
}

这可能是不可能的,但我想实例化Budget类 像这样

Budget budget = new Budget();

然后,我想通过预算中的Car属性分配Car的属性,例如:

budget.CarProperty.Insurance = 500;

我不知道这是否可能,如果不是,或者我正在做一些非常荒谬的事情。 在我的BLL类库的Manager类中,我有一个方法,在分配预算后返回预算.CarProperty.Insurance = 500;

例如:

public class BudgetManager()
{ 
    public void BudgetCreation()
    { 
        Budget budget = new Budget();
        budget.CarProperty.Insurance = 500;
        return budget;
    } 
}

使用Nuget

我创建了一个测试方法,它创建了一个新的预算实例

public void TestMethod()
{
    Budget budget = new Budget();
    BudgetManager manager = new BudgetManager();
    budget = manager.BudgetCreation();
    Assert.AreEqual(500, budget.CarProperty.Insurance)
}

budget.CarProperty.Insurance刚回来时为0而不是500。 再说一遍,我可能会遗漏一些小细节而对某些事情一无所知,所以请在我的

上轻松一点

1 个答案:

答案 0 :(得分:0)

总的来说,我同意@Plutonix关于课程的自我维持......但是,如果我理解你,正确地说,你希望能够做到这一点:

budget.CarProperty.Insurance = 500;

无需这样做,首先:

budget.CarProperty = new Car();

在这种情况下,你可以这样做:

public class Car
{ 
    public int Insurance { get; set; }
    public int Gas { get; set; }
}

public class Budget
{ 
    public Car Car { get; set; }
    public Budget()
    {
        Car = new Car();
    } 
}

public class BudgetManager
{ 
    public static Budget CreateBudget(int insurance)
    { 
        Budget budget = new Budget();
        budget.Car.Insurance = insurance;
        return budget;
    } 
}

因此,当您运行单元测试时,您将获得所需的行为:

[TestMethod]
public void TestMethod1() 
{

    int insurance = 500;
    Budget b = BudgetManager.CreateBudget(insurance);

    Assert.AreEqual(insurance, b.Car.Insurance);
}

单元测试了代码,它按预期工作。