I think the key phrase here is "I do not want that anyone to add a setter property in my classes."
In general, if you want to write an immutable class, you should mark your class as sealed and mark all fields as readonly.
Of course, if you expect people to inherit from your class, you have to consider the following:
There's nothing preventing a person from inheriting from adding whatever properties they want to your class. You can't enforce that constraint on inheritors, except by convention.
You can do a runtime check using reflection to see if inheritors have added any fields, however I wouldn't recommend it since it violates some of the elementary principles of encapsulation.
You have to check for more than just setters in your class. Its wholly possible for a person to write a method like setSomething
(a Java-style setter), or writing methods with side-effects that mutate internal values. There's no efficient way to check if your inheritors haven't used similar trickery to sneak mutability in your classes.
There's really nothing you can do to keep your class readonly if you allow people to inherit your class.