我試圖實現一個IDescription接口。這個接口的基本目的是我有許多不同的類,它們有多種語言的描述列表,我希望基本的AddDescription EditDescription和其他一些基本行爲由接口定義,而不是由繼承接口的類實現。我正試圖使用擴展方法將行爲分配給接口。使用泛型和擴展方法的IDescription接口
我有一些路障,如我如何訪問我傳遞到IDescription接口(entity.Descriptions.Add)的實體的描述集合?
我是非常新的泛型,擴展方法,匿名類型等,請容忍我與我如何使用這些誤解。如果你能幫助我糾正下面的代碼,將不勝感激。我寫這篇文章是爲了說明我正在努力達到的目標,它顯然是基本的錯誤。由於
public class Company : IDescription<Company, CompanyDescription>
{
public IList<CompanyDescription> Desriptions { get; set; }
}
public class Location : IDescription<Location, LocationDescription>
{
public IList<LocationDescription> Desriptions { get; set; }
}
public interface IDescription<eT, dT>
{
void AddDescription(eT, string text);
void EditDescription(eT, dT, string text);
}
public static DescriptionInterfaceExtensions
{
public static void AddDescription(this IDescription<eT, dT> description, eT entity, string text)
{
dT newDescription = new dT(text);
entity.Descriptions.Add(newDescription);
}
}
這正是我要的,感謝您的時間 – kaivalya 2009-09-16 19:50:05
有一個問題,我我跑到這裏: 我有LocationDescription和CompanyDescription分開的原因是因爲我有每個這些類的屬性,將它們連接到父級,例如:CompanyDescription類具有公司類型的公司屬性和LocationDescription具有位置類型的位置屬性。我怎樣才能將這些屬性包含到這種方法中。我需要設置這些屬性,但由於我們正在使用IDescription,所以我無法訪問它們。 我有單獨的具體子類實現,因爲我使用nhibernate作爲我的ORM。我認爲 – kaivalya 2009-09-17 15:52:57
IDescription也是通用的,但我認爲這不適用於nhibernate映射... – kaivalya 2009-09-17 15:53:47