如何访问财产里面的财产?

时间:2019-05-30 13:45:50

标签: c# for-loop xamarin.forms attributes

我有一个像这样的模型类:

public class MapModel
{
    public Field[] Fields { get; set; }
}

public class Field
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Node[] Nodes { get; set; }
    public string Icon { get; set; }
}

public class Node
{
    public float Long { get; set; }
    public float Lat { get; set; }
}

在我的视图模型中,我正在调用服务以获取一些地图数据和ObservableCollection,例如:

public ObservableCollection<Field> FieldsCollection { get; set; } = new ObservableCollection<Field>(); 

var mapData = await MapService.GetMapData(token, "sr");

foreach (var md in mapData.Fields)
{
    FieldsCollection.Add(md);                
    PinIcon = Icon;
}

现在我正在尝试从Node设置Long和Lat值,以指定Pin在地图上的位置...

public void LoadMapTab()
{
    foreach (var item in FieldsCollection)
    {                
        var pin = new Pin
                      {
                          Label = item.Name,
                          Position = new Position(/* SET VALUES FROM NODE LONG AND LAT*/),
                          Icon = BitmapDescriptorFactory.FromBundle(PinIcon)
                      };

        _map.Pins.Add(pin);
        Device.StartTimer(TimeSpan.FromMilliseconds(500), () =>
            {
                _map.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(/* SET VALUES FROM NODE LONG AND LAT*/),
                Distance.FromKilometers(8)));
                return false;
            });
    }
}

所以,我的问题是如何访问LongLat值并将其设置为

Position = new Position(.......)

1 个答案:

答案 0 :(得分:0)

item是Field,所以它有一个Nodes数组。您可以使用indexer []在数组中指定索引

Position = new Position(item.Nodes[0].Lat, item.Nodes[0].Long),

请注意,attribtute在C#中具有特定含义。这些是properties,而不是attributes