Как правило, это не так.
Обычно, если получение чего-либо подразумевает также выполнение чего-то более дорогого, вы должны использовать метод полного получения только для этой цели:
public object GetSomething() { }
// accessing code
var value = obj.GetSomething();
Это означает, что получение чего-то не является бесплатным ... Сравните с:
var value = obj.Something;
Это больше похоже на обычное присвоение значения, скрывающее опасный асинхронный вызов, происходящий за сценой, который, IMOэто плохая идея.
Но, как и со всем остальным ... это зависит также от других частей всей архитектуры.
Еслився цель объекта - абстрагировать множество асинхронных вызовов, используя свойство (например, в случае с сущностями Linq2Sql или Entity Framework), тогда это нормально, потому что вы должны знать, что имеете дело с вызовами, которые не являются (или близки к) без контекста кода.
...
Это зависит от контекста кода.Если всякий раз, когда вы получаете доступ к этой собственности, вы уверены, что вам напомнят о дорогостоящем звонке, то я думаю, что это нормально.Но если это не так, то вы должны сделать его более явным, превратив его в полноценный метод вместо свойства.