when T is a type of "bla"
Your above condition is true only for the current case, but I can create a class zero
public class Bla2: BaseStoreItem {...
Then Bla2 <> bla ... nor Bla2 is derived from bla, so if I try to use
StoreDataTestHelper<Bla2>();
This is wrong, the compiler is smart enough to understand that it will not work in this state, computer languages โโare not like English, they are designed to work the same in all conditions. And they are designed so that the rules of the language are correct in all cases. If they are different from each other, you will have chaos discovering where the error is.
source share