Zacznę od tego, nie jestem pewien, czy jest to możliwe. Uczę się generycznych i mam kilka repozytoriów w mojej aplikacji. Próbuję utworzyć interfejs, który ma typowy typ i przekształca go w coś, z czego wszystkie repozytoria mogą dziedziczyć. Przejdźmy teraz do mojego pytania.Próba użycia generycznego z Entity Framework
public interface IRepository<T>
{
IEnumerable<T> FindAll();
IEnumerable<T> FindById(int id);
IEnumerable<T> FindBy<A>(A type);
}
Czy można użyć nazwy rodzajowej, aby określić, co znaleźć?
public IEnumerable<SomeClass> FindBy<A>(A type)
{
return _context.Set<SomeClass>().Where(x => x. == type); // I was hoping to do x.type and it would use the same variable to search.
}
Aby wyjaśnić nieco lepiej, zastanawiałem się nad ciągiem, int lub dowolnym typem, który chciałem wyszukać. Co mam nadzieję na to, co mogę powiedzieć x.something gdzie coś jest równa zmiennej przekazanej w.
mogę ustawić dowolny repozytorium do mojego dbcontext używając
public IDbSet<TEntity> Set<TEntity>() where TEntity : class
{
return base.Set<TEntity>();
}
jakieś sugestie?
Jeżeli A jest pochodną SomeClass następnie można użyć OfType () – stevenrcfox
nie znaczy znaleźć wszystkie podmioty typu A z FindBy ? –
@BehnamEsmaili Nie myślałem, że chciałbym podać typ, który chcę przeszukać: string, int, DateTime itd. I wtedy wziąłbym to i przeszukałem bazę danych dla przekazanego typu – Robert