通过在C#中的集合中包含某些对象来定义类型

时间:2011-04-09 20:27:17

标签: c# c#-4.0

让我解释一下我的模型,我将要做什么,以及我想做什么,并就如何实施它发表意见。

背景

所以我有一个名为TelemetryStation的类,它有一个名为Sensor的另一个类的集合。那么代码可能会更清楚:

public class TelemetryStation
{
    IList<Sensor> Sensors { get; set; }
}

我打算在其中添加一个名为TelemetryStationType的属性,以便我们可以向TelemetryStation添加标签,确定它的类型。即WeatherStation,Chemigation等。如果满足每种类型遥测标准的标准,我会允许多个标签。

这很好,但我真正想做的是保证WeatherStation有一定数量的特定传感器,如温度,风速等。我的想法是在我的网页或Windows窗体页面上,我然后可以抓住某种类型的所有遥测站,并保证它们具有正确的传感器。

问题

那么最好的编码方式是什么?我可以在课堂上进行建模吗?或者我是否需要创建用某些类型的传感器抓取所有TelemetryStation的查询?

修改

我应该添加的一些可能很重要的是我们如何获取数据。所以我们有一个由另一家公司制作的端口监听器,它将遥测站读数转储到csv文本文件中。因此,文件以工作站ID命名,每行都有一个日期时间戳,后跟逗号分隔的读数。没有关于读数的标识。所以我允许用户定义遥测站的模型,直到通过端口监听器传入的传感器及其在文本文件中的行中的位置。然后,我使用用户创建的数据模型解析文本文件。这样,如果公司更改模型或传感器数据在文本文件中的顺序,我们可以定义新模型,新数据流将有意义。

1 个答案:

答案 0 :(得分:1)

你的电台的子类怎么样:

class WeatherStation : TelemetryStation
{
    public Sensor Temperatur { get; set; }
    public Sensor Wind { get; set; }
}

并在您的基类中反映属性

class TelemetryStation
{
    private List<Sensor> _Sensors = null;
    public List<Sensor> Sensors 
    {
        get 
        {
            if (_Sensors == null)
            {
               _Sensors = typeof(this).GetProperties().Where(p => p.PropertyType is Sensor).Select(p => (Sensor)p.GetValue(this, null)).ToList();
            }
            return _Sensors;
        }
    }
}

通过这种方式,您可以访问特定工作站上的所有传感器,并且可以确保特定的工作站类型具有一组特定的传感器。