public class Model
{
}
public interface IRepository<TEntity>
{
/// <summary>
/// Gets entity by key.
/// </summary>
/// <typeparam name="TEntity">The type of the entity.</typeparam>
/// <param name="keyValue">The key value.</param>
/// <returns></returns>
TEntity GetByKey(object keyValue);
}
public interface IRepository
{
/// <summary>
/// Gets entity by key.
/// </summary>
/// <typeparam name="TEntity">The type of the entity.</typeparam>
/// <param name="keyValue">The key value.</param>
/// <returns></returns>
TEntity GetByKey<TEntity>(object keyValue) where TEntity : class;
}
public class BaseRepository : IRepository
{
public TEntity GetByKey<TEntity>(object keyValue) where TEntity : class
{
throw new NotImplementedException();
}
}
public class BaseRepository<T> : BaseRepository, IRepository<T> where T : class
{
public T GetByKey(object keyValue)
{
return this.GetByKey<T>(keyValue);
}
}
public class BaseRepository2<T> : IRepository, IRepository<T> where T : class
{
public T GetByKey(object keyValue)
{
return this.GetByKey<T>(keyValue);
}
public TEntity GetByKey<TEntity>(object keyValue) where TEntity : class
{
throw new NotImplementedException();
}
}
public interface IBiz
{
void Get();
}
class bbb : BaseRepository<Object>, IBiz
{
public void Get()
{
this.GetByKey(1);
this.GetByKey<Model>(1);
}
}