我正在做一个项目。
有一些表 CIRCLE、DIVISION、SUBDIVISION 和 FEEDERS。现在,这些表的层次结构是 CIRCLE 有很多 DIVISIONS,DIVISION 有很多细分,Subdivision 有很多 FEEDERS。所以这些表之间存在一对多的关系。
现在,我必须使用 c# 和 OOP 的概念来构建应用程序。
任何人都可以帮助我如何使用 OOP 概念在 c# 应用程序中实现这个表层次结构吗?
我正在做一个项目。
有一些表 CIRCLE、DIVISION、SUBDIVISION 和 FEEDERS。现在,这些表的层次结构是 CIRCLE 有很多 DIVISIONS,DIVISION 有很多细分,Subdivision 有很多 FEEDERS。所以这些表之间存在一对多的关系。
现在,我必须使用 c# 和 OOP 的概念来构建应用程序。
任何人都可以帮助我如何使用 OOP 概念在 c# 应用程序中实现这个表层次结构吗?
我强烈建议使用ORM 框架,例如LINQ to SQL或更高级的Entity Framework。
由于这听起来很像家庭作业,无论如何让我们以一种对 OOP 友好的方式来解决它,通过定义一个抽象基类来避免冗余:
public abstract class OneToMany<TMany>
{
private readonly IList<TMany> children = new List<TMany>();
public IList<TMany> Children { get { return children; }}
}
public class Circle : OneToMany<Division>
{
}
public class Division : OneToMany<Subdivision>
{
}
public class Subdivision : OneToMany<Feeder>
{
}
public class Feeder
{
}
用法
var circle = new Circle();
circle.Children.Add(new Division());
var subdivision = new Subdivision();
subdivision.Children.Add(new Feeder());
subdivision.Children.Add(new Feeder());
circle.Children.First().Children.Add(subdivision);
解释
OneToMany<T>
是所有具有一对多关系的类派生自的通用抽象基类。它接受类型参数 ,TMany
表示一对多关系的多侧元素的类型。
所以,Circle
is a OneToMany<Division>
(一个圆圈有多个分区),while Division
is a OneToMany<Subdivision>
,依此类推。
定义了此类层次结构后,我们现在可以构建表示数据库行的对象树,如“使用”部分所示。我们可以这样想象:
圆圈 | 分配 | 细分 / \ 喂料机