Вы правы в том, что вы не можете поддерживать состояние с помощью методов расширения, но вы также не сможете поддерживать его с помощью свойств расширения. Они могут манипулировать состоянием только такими способами, к которым у вас в любом случае был бы доступ.
Однако я не верю, что статический словарь тоже поможет. Возможно, было бы хорошо поддерживать состояние shared , но не состояние объекта. Вы делаете что-то необычное, как следующее? Для каждого экземпляра объекта имеется хороший уникальный идентификатор, так что вы можете добавить в словарь переменную состояния, которая будет keyed для этого объекта? Это кажется довольно круглым, если вы пытаетесь это сделать
Предполагая, что у вас нет контроля над самим классом (следовательно, необходимо каким-то образом расширять его), вы можете наследовать от этого объекта? Тогда, конечно, вы можете делать то, что вам нужно.