Я пытаюсь пройти через мой проект и аннотировать все свои методы соответствующими аннотациями Resharper / Jetbrains, поэтому мне нужна небольшая помощь и что-то, что может ударить меня, когда я случайно пытаюсь передать материал, который где-то не принадлежит.
Однако это то, чего я просто не могу понять.
Рассмотрим следующее:
public interface ITestClass
{
Task<int?> TestMethod([CanBeNull] int? testInput);
}
public class TestClass : ITestClass
{
public async Task<int?> TestMethod(int? testInput)
{
return await Task.FromResult(testInput);
}
}
public class TestConsumer
{
[NotNull]
private readonly ITestClass m_tester;
[NotNull]
private readonly TestClass m_tester2;
public TestConsumer([NotNull] ITestClass tester, [NotNull] TestClass tester2)
{
m_tester = tester;
m_tester2 = tester2;
}
public async Task TestMethod([NotNull] int? testInput)
{
var test1 = await m_tester.TestMethod(testInput);
var test2 = await m_tester2.TestMethod(testInput);
}
}
![![enter image description here](https://i.stack.imgur.com/tXxd4.png)
Я перестроил это, чтобы показать проблему, с которой я сейчас сталкиваюсь. Обычно я использую внедрение зависимостей и ожидаю, что интерфейсы определенных сервисов (пусть в этом случае «ITestClass» будет интерфейсом сервиса «TestClass») в конструкторе моего, например. контроллер (см. «TestConsumer»).
Однако аннотации R # / Jetbrains явно не нравятся. Тем не менее, когда я пробую это с реализацией этого интерфейса вместо этого - не проблема.
Это действительно немного раздражает. Я не хочу, чтобы весь мой код шатался сейчас. По-видимому, это также является проблемой только при работе с кодом await / async, поскольку это работает в обоих случаях, если я опущу, например, «await», но это не вариант.
Есть ли решение? В конце концов, что может отсутствовать в интерфейсе R #, который есть в реализации? Определение метода здесь.
EDIT:
Для дополнительной информации:
Я использую Resharper Ultimate 2018.3.1 в Visual Studio Enterprise 2017 версии 15.6.1.