Static generic methods allow type-inference to make usage really easy; Static fields on generic classes allow virtually overhead-free storage of (meta)data. It wouldn't surprise me at all if orm's like dapper …

Why do we observe this weird behaviour? What keeps us from comparing the values of generic types which are known to be icomparable? Doesn't it somehow defeat the entire purpose … In case you happen to have a generic method that returns a generic value but doesn't have generic parameters, you can use default(t) + (t)(object) cast, together with c# 8 pattern matching/type …