如何使用模型/实体类来创建线程化实例类?

时间:2014-01-26 21:53:28

标签: c# oop architecture

从例如传递模型类是否被认为是一种好习惯。作为“信息模型”的线程服务类的DAL?

示例:

public class CarModel {

    public string Name                 { get; set; }
    public int    AmountOfWheels       { get; set; }
    public Engine EngineDescription    { get; set; }

}

public class Car {

    public CarModel CarModel        { get; set; }

    public Car(CarModel model) {
        this.CarModel = model;

        Thread.Start(BrummBrumm);
    }

    private void BrummBrumm() {
        // start the car
    }

}

此示例是在假设CarModel是实体(例如,与Entity Framework或任何其他存储库/ DAL一起使用)或模型类与UI,WebApi,WCF一起使用的情况下进行的。而Car是一个驻留的类作为例如的实施Windows服务。

修改更多代码

public class CarManager {

    public List<Car> Cars = new List<Car>();

    public void Add(CarModel model) {
        this.Cars.Add(new Car(model));
    }

    public void Remove(int id) {
        ...
    }

}

...那么上面的例子是什么?如果我不仅有汽车,还有摩托车怎么办?上面的例子不会创建很多样板代码吗?

1 个答案:

答案 0 :(得分:0)

最佳做法是在从/向服务传输数据时使用DTO。还有一些工具可以减少将DTO映射到业务对象所需的代码。我个人使用Automapper。

有一篇好文章,以防您想阅读DTO - Pros and Cons of Data Transfer Objects

但是,如果您的解决方案很小并且不应该增长并且您的服务没有公开,那么您最好只使用业务对象以避免过度设计。

希望它有所帮助!