Stu*_*143 11 c# collections class
我是C#的相对新手,虽然我是一名称职的程序员,但我承认我对编写自定义集合类是否是一个好主意感到困惑.很多人似乎都说"不要",但在C#中有一整套基类.
这是我的具体案例.我有一个时间表申请.作为其中的一部分,我有一个服务类,服务类包含服务y的集合,例如路由链接.路由链接本身就是一个自定义类:
public class Service
{
public RouteLinks RL; // A collection of RouteLink types
...
}
public class RouteLink
{
public string FirstStopRef;
public string LastStopRef;
public Tracks RouteTrack; // Another collection, this time of Track types
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经看过使用Dictionary作为RouteLinks的类型,因为我需要能够引用它们.原则上这很好.但是,将RouteLink添加到RouteLinks集合的过程包括检查它是否已经存在,或者它是否已扩展和现有的路由链接,或者......为此,我需要一个自定义的添加功能.
那么为什么创建自定义集合类会有这么糟糕的做法呢?为什么我不应该继承CollectionBase或DictionaryBase?
我或许应该补充一点,我从VBA传输此代码[请不要拍我:)]我必须实现自定义集合.
一个简单的解决方案是定义另一个类,而不是RouteLinks集合类型,比方说RouteLinksRepository。此类将包含用于List<RouteLink>与AddRoute(RouteLink)此对象集合交互的功能以及任何其他自定义逻辑RouteLink。然后,您的服务类将仅包含此存储库类的一个实例。
public class Service
{
public RouteLinksRepository RL; // A collection of RouteLink types
// ...
}
public class RouteLinksRepository
{
public List<RouteLink> RouteLinks;
public bool AddRoute(RouteLink linkToAdd)
{
//Custom logic on whether or not to add link
}
//Your other logic for the class
}
public class RouteLink
{
public string FirstStopRef;
public string LastStopRef;
public Tracks RouteTrack; // Another collection, this time of Track types
}
Run Code Online (Sandbox Code Playgroud)