【发布时间】:2011-10-11 02:53:34
【问题描述】:
在我的项目(.NET 3.5)中,我得到了许多这样的 DAO:(每个实体一个)
public class ProductDAO : AbstractDAO<Product>
{...}
我需要创建一个函数,该函数将接收 DAO 的名称或其实体的名称(您认为最好的名称)并运行 DAO 的“getAll()”函数。就像这段代码只为一个实体做的那样:
ProductDAO dao = new ProductDAO();
dao.getAll();
我是 C# 新手,如何使用反射来做到这一点?
有点像这样:
String entityName = "Product";
AbstractDAO<?> dao = new AbstractDAO<entityName>()
dao.getAll();
编辑
我忘记了一个细节,这是 getAll() 返回的方式:
IList<Product> products = productDao.getAll();
所以我还需要在列表中使用反射。怎么样?
解决方案
Type daoType = typeof(AbstractDAO<>).Assembly.GetType("Entities.ProductDAO");
Object dao = Activator.CreateInstance(daoType);
object list = dao.GetType().GetMethod("getAll").Invoke(dao, null);
【问题讨论】:
标签: c# reflection .net-3.5