По сути, вы не должны блокировать какие-либо внешние объекты, если только это не является конкретно блокирующим объектом (например, свойство SyncRoot
в неуниверсальном ICollection
, для которого было разработано). Это может привести к тому, что другие «пользователи» ссылки также будут заблокированы, что приведет к нежелательной блокировке или даже к взаимной блокировке.
Очевидно, this
и typeof()
по определению являются внешними объектами. Строки являются неизменяемыми, а строковые литералы - интернированными, так что одна и та же ссылка может находиться в unse в разных местах, даже если вы непосредственно присвоили ее в своем объекте.
Я не знаю правила StyleCop для них, но у меня нет хорошего обзора того, что доступно для StyleCop или FxCop, поэтому вполне может быть что-то в дикой природе, чтобы проверить в этих случаях. Я бы проверил синхронизацию только для закрытых членов, которые не являются строками и не возвращаются напрямую ни в каком свойстве или методе.