我有这个通用方法:
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
的接口可以吗?我这样做是为了将不同的类(所有这些类都继承接口)传递给方法。该接口也可以是具有属性的接口,但我认为它不会改变问题,因为实现此接口的实体具有完全不同的类型,尽管它们都具有该属性。IEntity
Send
IEntity
ID
ID