Допустим, у меня есть интерфейс со свойством только для чтения и конкретным классом, в котором свойство создается в конструкторе и помечается как доступное только для чтения.
internal interface IExample
{
ObservableCollection<string> Items { get; }
}
internal class Example : IExample
{
private readonly ObservableCollection<string> _items;
public Example()
{
_items = new ObservableCollection<string>();
}
public ObservableCollection<string> Items
{
get { return _items; }
}
}
Когда я использую интерфейс, Resharper предупреждает меня, что у меня может быть возможная нулевая ссылка в вызывающем коде.
public class ExampleWithWarnings
{
public void Show()
{
IExample example = new Example();
// resharper warns about null reference
example.Items.Add( "test" );
}
}
Я понимаю, что по определению интерфейс не гарантирует, что свойство будет иметь значение. (Я также признаю, что свойства на интерфейсах не идеальны). Но я знаю, что это свойство всегда будет иметь значение.
Есть ли какой-нибудь магический атрибут, который я могу добавить в интерфейс, который бы помешал Resharper показывать предупреждение? Я бы предпочел не украшать все виды использования класса предупреждением об отключении прагмы.