我试图实现一个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