Член не реализован с использованием абстрактного класса 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
мы явно ссылаемся на эти зависимости.