1

我有这个通用方法:

        public void Send < TBiz, TEntity > (string serviceName, string pkName)
        where TEntity: class, IEntity
        where TBiz: class, BLL.Modules.INewSend 
        {
         var biz = DependencyFactory.Get < TBiz > ();
         var query = (biz.GetNotSent() as IEnumerable < TEntity > );
         NewSender < TBiz, TEntity > (serviceName, pkName, query);
        }

TEntity是我的数据模型对象(我的意思是数据库表的模型),可以是任何类型(如汽车、人类、鲜花等),但它们都具有ID属性。TEntity实现IEntity接口。IEntity是一个空接口,也可以是一个只有ID如下实现的接口:

public interface IEntity
{
}

或者

public interface IEntity {
 public int ID {
  get;
  set;
 }
}

TBiz 是我实现INewSend. INewSend是一个简单的接口,有 2 个实现:

public interface INewSend {
 void Send(long id, string userName);
 IEnumerable < IEntity > GetNotSent(); 
}

这段代码工作正常,但我很好奇,就面向对象的原则而言,TEntity类继承为IEntity的接口可以吗?我这样做是为了将不同的类(所有这些类都继承接口)传递给方法。该接口也可以是具有属性的接口,但我认为它不会改变问题,因为实现此接口的实体具有完全不同的类型,尽管它们都具有该属性。IEntitySendIEntityIDID

4

2 回答 2

3
于 2020-02-27T09:33:47.437 回答
0

没关系,有时我使用一个空接口只是为了对实体进行分类。

于 2020-02-27T09:43:30.897 回答