Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用模型/实体类创建线程实例类?_C#_Oop_Architecture - Fatal编程技术网

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

C# 如何使用模型/实体类创建线程实例类?,c#,oop,architecture,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

将模型类(例如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是一个实体(例如,用于实体框架或任何其他存储库/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) {
        ...
    }

}
公共类CarManager{
公共列表车辆=新列表();
公共无效添加(CarModel模型){
此.Cars.Add(新车(车型));
}
公共无效删除(int id){
...
}
}

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

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

有一篇好文章,以防你想读到DTO的-

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


希望有帮助

在这种情况下,一种策略模式可能会有所帮助:@Acrotygma嗨,你没有对我的答案发表任何评论,只是想知道它是否对你有帮助?如果没有,我能做些什么来帮助你回答你的问题吗?