В моем проекте (.NET 3.5) я получил много DAO, таких как: (по одному на каждую сущность)
public class ProductDAO : AbstractDAO<Product>
{...}
Мне нужно создать функцию, которая получит имя DAO или имяего сущности (что вы считаете лучшим) и запустите функцию getAll () DAO.Как этот код делает только для одной сущности:
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);