我已經實現了一個通用資源庫,但有一個要求是在運行時動態地創建適當的資源庫,並將實體類型設置爲字符串。如何投射到MyInterface <TEntity>
我已成功地創建使用存儲庫:
Assembly common = Assembly.LoadFrom(@"CommonLibrary.dll");
Type entityType = common.GetType("Models.OneOfManyEntities");
Type repoType = typeof(TradeSiftRepository<>).MakeGenericType(entityType);
var repo = Activator.CreateInstance(repoType, new UnitOfWork());
然而repo
是一個對象,我真的想將它轉換爲IRepository<TEntity>
我已經試過IRepository<entityType>
但這是不正確的
這是接口用於回購:
public interface IRepository<TEntity> : IDisposable where TEntity : class
{
IQueryable<TEntity> FindAll();
IQueryable<TEntity> Find(Expression<Func<TEntity, bool>> filter = null, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, string includeProperties = "");
TEntity FindById(object Id);
void Insert(TEntity entity);
void Update(TEntity entity);
void Delete(object id);
void Delete(TEntity entity);
}
回購的活化實例是正確的類型,但甲ctivator返回一個對象類型,所以我需要將它轉換爲使用方法。
你什麼類型,如果你使用' repo.GetType()'? – Xharze 2012-07-31 11:12:38
回購的創建實例是正確的類型,但我必須將其轉換爲使用方法,例如repo.FindById(1) – HadleyHope 2012-07-31 11:15:30