If I understand what your after you want a base class created thus:
public abstract BaseClass<T1, T2>
{
protected T1 GetRepository()
{
IServiceLocator locator = new ServiceLocator();
T1 repository = locator.GetService<T1>();
return repository;
}
protected T2 GetInstance()
{
IInstanceLocator locator = new InstanceLocator();
T2 instance = locator.GetInstance<T2>();
return instance;
}
}
you can then use this thus:
public ChildClass : BaseClass<IUserRepository, IUser>
{
public ChildClass()
{
IUserRepository userRepos = GetRepository();
IUser user = GetInstance();
}
}
etc.
public ChildClass2 : BaseClass<IUserRepository2, IUser2>
{
public ChildClass()
{
IUserRepository2 userRepos = GetRepository();
IUser2 user = GetInstance();
}
}