Член не реализован с использованием абстрактного класса Xunit.Sdk.DataAttribute

Я пытаюсь реализовать абстрактный класс Xunit.Sdk.DataAttribute, но по какой-то причине он не работает.

public sealed class CustomDataAttribute: Xunit.Sdk.DataAttribute
{
    public override IEnumerable<object[]> GetData(MethodInfo testMethod)
    {
        throw new NotImplementedException();
    }
}

Это говорит: абстрактный унаследованный член

'IEnumerable<object[]> Xunit.Sdk.DataAttribute.GetData(System.Reflection.MethodInfo)'

не реализовано.

Тогда это явно реализуется.

Эта ошибка может быть воспроизведена только в одном проекте, в других проектах работает нормально. Может быть, у вас была похожая ситуация?

1 ответ

Это кажется дефектом в новом инструменте, его можно устранить, добавив ссылку на время сборки System.Reflection а также System.Runtime в frameworkAssemblies раздел вашего project.json так что это выглядит так:

{
  "version": "1.0.0-*",
  "dependencies": {
    "YourAssemblyUnderTest": "1.0.0-*",
    "xunit":  "2.*" 
  },
  "frameworks": {
    "net45": {
      "frameworkAssemblies": {
        "mscorlib": "",
        "System": "",
        "System.Core": "",
        "System.Web": "",
        "System.Reflection": {
          "type": "build",
          "version": ""
        },
        "System.Runtime": {
          "type": "build",
          "version": ""
        }
      }
    }
  }
}

Эта проблема отслеживается в выпусках xUnit № 618 и № 716, где Аксель Хир пишет хороший пост об этом, хотя и на немецком языке. Подводя итог посту Акселя, извинения, если я неправильно перевёл немецкий, не является моим родным языком:

Создание библиотек DotNet Core на основе библиотек PCL работает не так гладко, как до появления DotNet Core. В определенных обстоятельствах типы, включенные в зависимости зависимостей, недоступны, что приводит к ошибкам компилятора, таким как:

  • MyDataAttribute не реализует унаследованный абстрактный член DataAttribute.GetData (MethodInfo) '
  • MyDataAttribute.GetData (MethodInfo) ': не найден подходящий метод для переопределения

Путем ссылки System.Reflection а также System.Runtime мы явно ссылаемся на эти зависимости.

Другие вопросы по тегам