Если вы определяете открытый интерфейс со свойством в сборке A, вы можете использовать этот интерфейс в сборке B.
Теперь вы можете изменить реализацию свойства (возможно, извлекая значение из базы данных, а не сохраняя его в поле). Затем вы можете перекомпилировать сборку A и заменить более старую. Сборка В продолжалась бы нормально, потому что интерфейс не изменился бы.
Однако, если вы изначально начали с открытого поля и решили, что это не подходит, и хотите изменить реализацию и сделать это, вам нужно преобразовать ее в свойство, тогда это будет означать, что вы должны изменить публичный интерфейс сборки А. Любые клиенты этого интерфейса (включая сборку B) также должны быть перекомпилированы и заменены, чтобы иметь возможность работать с этим новым интерфейсом.
Итак, вам лучше начать с свойства изначально. Это инкапсулирует реализацию свойства, предоставляя вам возможность изменять его в будущем, не беспокоясь о том, какие клиенты (включая сборку B) уже в мире используют сборку A. Потому что, если в мире уже есть клиенты. использование сборки А, изменение интерфейса сломало бы всех клиентов. Если они используются другой командой в вашей компании или другой компанией, то они будут недовольны, если вы сломаете их сборки, изменив свой интерфейс!