Как уже говорили другие, вам придется написать
Test2.Subroutine(Test.AnObject)
Это хороший пример того, почему стоит быть немного осторожнее с конструкцией With
в VB.Net. Я считаю, что для того, чтобы это вообще стоило использовать, вам действительно нужно установить более одного или двух свойств и / или вызвать более одного или двух методов для объекта в операторе With
.
Когда есть много, и вы не смешиваете .SomeProperty =
или .DoSomething
с другими вещами, это потрясающая помощь для удобочитаемости.
И наоборот, несколько точек, разбросанных среди множества других вещей, на самом деле намного сложнее читать, чем вообще не использовать With
.
В этом случае сами символы .
могут легко потеряться визуально, хотя, конечно, это будет синтаксически согласованным.
Полагаю, они просто решили не реализовывать это. На самом деле VB - это не тот язык, на котором они хотят поощрять односимвольные элементы языка, и, как опытный пользователь VB.Net, я в целом согласен с этим.
Итог: если вы используете предложение With
со многими содержащимися элементами, необходимость ссылаться на сам объект не так уж и велика. Если вы используете его только с одним или двумя, возможно, лучше вообще не использовать предложение With
.