我有以下情況:C#抽象基類 - 延長實施
public class GeoLocation
{
public double Longitude { get; set; }
public double Latitude { get; set; }
public string LocationName { get; set; }
}
public abstract class Base
{
public abstract GeoLocation GeoLocation { get; set; }
}
public class Concrete : Base
{
public override GeoLocation GeoLocation
{
get;
set;
}
}
現在,如果我創建了一個類Concrete2
從Base
繼承,以及和我想的GeoLocation
對象有1個以上屬性:
public string Address{ get; set; }
什麼是最好的實施方式?
我可以創建一個名爲GeoLocationEx : GeoLocation
新類,並存在,但然後將Address
財產在我Concrete2對象,我將有2個屬性:GeoLocation
和GeoLocationEx
我不喜歡......
我也可以使Geolocation類部分,並將其與Address
屬性爲Concrete2
類延伸,但我不知道這會是一個「正確」使用部分類。
什麼能做到這一點的最好方法是什麼?
在此先感謝您的幫助!
'GeoLocation'對象?在這種情況下,如果您想通過'Base'界面使用Concrete2'對象,則必須檢查它是否是Concrete2'對象,而不是'Concrete',並且只有傳入'GeoLocationEx'對象。 – 2012-04-22 14:29:28
爲什麼不能簡單地將「地址」添加到GeoLocation對象? – 2012-04-22 14:30:39
我找到了解決辦法看這個帖子: 抽象類請求其中T:參數{ -t參數; } 類專門:請求 { } –
2012-04-22 14:47:37