OK, thanks for the clarifying comment I think I see what your trying to do here.
Firstly you want to constrain T to the base class of ConcreteTypeA and ConcreteTypeB (lets call it BaseType).
Secondly you'll probably want to remove the enum and decide what method to call via the type parameter T instead (this stops someone calling GetSomething<TypeA>(eType.B, myClass))
Thirdly you don't need to type parameters on MethodA and MethodB, just have them return their common base type.
/// A Generic method to call individual methods depending on the given enum
/// and returns a Generic type.
public T GetSomething<T>(Model myClass) where T : BaseType
{
// Do some common tasks here before calling the private methods
// ...
if(typeof(T) == typeof(ConcreteTypeA))
return (T)GetMethodA(myClass);
if(typeof(T) == typeof(ConcreteTypeB))
return (T)GetMethodB(myClass);
}
You can possibly use GetMethodA(myClass) as T instead.
If you have to use the enum to decided instead of the type parameter then you'll have to remove the generics and just return the base class to be type safe (or accept that the method will sometimes throw InvalidCast when the enum doesn't match T)