Допустим, у меня есть интерфейс со свойством только для чтения и конкретным классом, в котором свойство создается в конструкторе и помечено как доступное только для чтения.
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? Я бы предпочел не украшать все использования класса предупреждением о запрещении прагмы.