2016-07-13 27 views
-2

以下は私のジェネリッククラスです。インスタンスを作成するためにはGetAllメソッドにアクセスする必要があります。このクラスがGetAllメソッドにアクセスするにはどうすればインスタンスを作成できますか?クラスは、それはこのようにそれを作成するときに、それに渡されたタイプを持っている必要がありますジェネリッククラスであるため、以下 は私のコードクラスのインスタンスを作成するには?

public class GenericRepository<TContext> : IGenericRepository 
      where TContext : DbContext, new() 
    { 
     private TContext _entities; 
     public TContext Context 
     { 

      get { return _entities; } 
      set { _entities = value; } 
     } 
     public virtual List<TEntity> GetAll<TEntity>() where TEntity : class 
     { 
      try 
      { 
       _entities = new TContext(); 
       return _entities.Set<TEntity>().ToList(); 
      } 

      catch (Exception) 
      { 
       return null; 
      } 

     } 
    } 
    public interface IGenericRepository 
    { 
     List<TEntity> GetAll<TEntity>() where TEntity : class; 
    } 
+3

以前にC#を使用したことがありますか?もしそうでなければ、このコードで何を達成したいと思いますか? – Clint

答えて

2

です。

IGenericRepository referenceToRepostoryObject = new GenericRepository<MyDbContextClassName>(); 
+0

@Martin Brown、あなたのソリューションに感謝 –

0

これは必要なのですか?

var d1 = typeof(GenericRepository<>); 
Type[] typeArgs = { typeof(Item) }; 
var makeme = d1.MakeGenericType(typeArgs); 
var repository = (IGenericRepository)Activator.CreateInstance(makeme); 

repository.GetAll<Item>(); 
関連する問題