Не зная источника, похоже, что вызов As<type>()
эквивалентен obj as type
т.е. в данном случае объект приводится как тип type
- UserPart
. Таким образом, User
определяется как IContent
, но в этом случае предполагается, что класс, реализующий этот интерфейс, имеет тип UserPart
и может быть безопасно преобразован в этот тип.
Итак, User.As<UserPart>()
возвращает объект типа UserPart
, который предположительно имеет свойство Record
.
Мне кажется странным, потому что зачем абстрагировать интерфейс IContent
, если вы привязываете реализацию к типу UserPart
, но опять же, я не знаю код, и он вполне может иметь смысл в более широком контексте .
edit: я говорю, связывая реализацию, потому что предположительно User.As<UserPart>()
может вернуть ноль, если базовый класс не типа UserPart
, и для этого нет проверки.