繁体   English   中英

将一个类设置为另一个单独的类中的属性

[英]Setting a class as a property within another separate class

对于我的项目,我有几个课程。 我想通过以下方式将其中两个类别联系在一起:它是基本预算应用程序。

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();

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

budget.CarProperty.Insurance = 500;

我不知道这是否可能,如果不这样做,或者我正在做一些完全荒谬的事情。 在带有BLL类库的Manager类中,我有一个方法在分配了budget.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。同样,我可能会丢失一些小细节并且对某些东西一无所知,所以请对我轻松一点

总的来说,我同意@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);
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM