Question: Are there any considerations for immutable types regarding hash codes?

Should I generate it once, in the constructor?

How would you make it clear that the hash code is fixed? Should I? If so, is it better to use a property called HashCode, instead of GetHashCode method? Would there be any drawback to it? (Considering both would work, but the property would be recommend).

Answer: 
I would generate the hash code once when `getHashCode` is called the first time, then cache it for later calls. This avoids calling it in the constructor when it may not be needed.

If you don't expect to call `getHashCode` very many times for each value object, you may not need to cache the value at all.
In general, computing the HashCode should be fast. So caching should not be much of an optimization, and not worth the trouble.

If profiling really shows that GethashCode takes a significant amount of time then maybe you should cache it, as a fix. 

But I wouldn't consider it part of the normal practice.