我有兩個形狀 - 矩形和圓形的列表。 他們都分享3共同的特性 - ID,類型和邊界C#將兩組不同的列表組合在一起
圈有2個額外的屬性 - 範圍和中心
我如何加入每種類型到一個列表的列表,這樣我就可以在他們重複,所以我不必鍵入兩個foreach循環
這可以比組合列表更好嗎?
public interface IRectangle
{
string Id { get; set; }
GeoLocationTypes Type { get; set; }
Bounds Bounds { get; set; }
}
public class Rectangle : IRectangle
{
public string Id { get; set; }
public GeoLocationTypes Type { get; set; }
public Bounds Bounds { get; set; }
}
public interface ICircle
{
string Id { get; set; }
GeoLocationTypes Type { get; set; }
Bounds Bounds { get; set; }
float Radius { get; set; }
Coordinates Center { get; set; }
}
public class Circle : ICircle
{
public string Id { get; set; }
public GeoLocationTypes Type { get; set; }
public Bounds Bounds { get; set; }
public float Radius { get; set; }
public Coordinates Center { get; set; }
}
public class Bounds
{
public Coordinates NE { get; set; }
public Coordinates SW { get; set; }
}
public class Coordinates
{
public float Lat { get; set; }
public float Lng { get; set; }
}
我會推薦先將Circle和Rectangle轉換成一個'IShape'(它們來自該接口)。正如你現在所看到的,Circle和Rectangles沒有共同之處。 – 2012-07-13 16:18:46
定義「更好」。更高效?更容易維護/閱讀?他們在單獨的名單中是否有原因?你可以讓你的不同形狀從更抽象的對象類型下降,並使用<你的抽象類型>的列表,但是如果你需要引用,那麼當迭代更通用的列表時,你必須將對象轉換爲正確的特定子類他們的具體屬性。名單 ...包含長頸鹿,土狼,斑馬等 –
Tim
2012-07-13 16:21:50