Указание ReSharper, что поле не равно нулю, когда другое свойство равно true - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть класс, где я использую свойство типа Exists, которое возвращает true, когда поле _value не null.

Это поле позже используется для создания StreamReaderот него.Когда я использую его, ReSharper предупреждает меня, что это может быть null, но так как я предотвращаю это с if(Exists) раньше, этого не будет.

Я отключил предупреждение с комментарием, но мне было интересно, есть ли более чистый способ, или какая-нибудь аннотация или другой прием, чтобы ReSharper понял, что безопасно использовать _value, когда Exists == true?

internal class User
{
    private readonly string _value;

    internal User([NotNull] string name, [CanBeNull] string value)
    {
        _value = value;
    }

    public bool Exists => !(_value is null);

    public async Task CopyToAsync(Stream stream)
    {
        if (Exists)
        {
            // ReSharper disable once AssignNullToNotNullAttribute - '_value' won't be null here
            using (var valueStream = _value.ToStreamReader()) 
            {
                await valueStream.BaseStream.CopyToAsync(stream);
            }
        }
    }   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...