3

我正在尝试实现一个包含对象列表的接口类。如何使列表通用,以便实现类定义列表的类型:

public interface IEntity
{
    Guid EntityID { get; set; }
    Guid ParentEntityID{ get; set; }
    Guid RoleId { get; set; }

    void SetFromEntity();
    void Save();
    bool Validate();
    IQueryable<T> GetAll(); // That is what I would like to do
    List<Guid> Search(string searchQuery);
}
public class Dealer : IEntity
{
   public IQueryable<Dealer> GetAll() { }
}
4

3 回答 3

12

你可以这样做:

public interface IEntity<T>
{
    IQueryable<T> GetAll();
}

public class Dealer : IEntity<Dealer>
{
   public IQueryable<Dealer> GetAll() { }
}
于 2009-03-24T06:05:18.490 回答
3

您只需要使 IEntity 本身成为通用的。然后,使用 GetAll() 定义中的类型参数。

以下是您更改代码的方法:

public interface IEntity<TListItemType>
{
     // stuff snipped

     IQueryable<TListItemType> GetAll();
}

public class Dealer : IEntity<Dealer>
{
   public IQueryable<Dealer> GetAll() { // some impl here }
}
于 2009-03-24T06:05:01.657 回答
1

Save(),Validate()等逻辑添加到您的域对象(我猜这就是 a Dealer)并不是世界上最好的主意,因为它违反了SRP

于 2009-03-24T06:52:06.100 回答