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.
Why do you need to make sure that the hashcode is fixed? The semantics of a hashcode are that it will always be the same value for any given state of an object. Since your objects are immutable, this is a given. How you choose to implement GetHashCode is us up to you. 

Having it be a private field that is returned is one choice - it's small, easy, and fast.