Нет. Смысл последнего поля в том, что оно устанавливается один раз во время строительства и никогда не изменится после этого. Как мог компилятор или ВМ узнать что-нибудь полезное о conn
в вашем случае? Откуда ему знать, что только это свойство должно быть в состоянии установить его, а не какой-то другой метод?
Возможно, если бы вы объяснили, какой должна быть семантика, мы могли бы придумать альтернативу. Вы могли бы потенциально иметь интерфейс «провайдера», представляющий способ получения значения, а затем MemoizingProvider
, который проксирует другого провайдера, но только один раз, кэшируя значение в противном случае. Это также не может иметь окончательного поля для кэшированного значения, но по крайней мере оно будет только в одном месте.