Библиотека .NET FluentAssertions (версия 2.1.0) имеет несколько BeDecoratedWith<T>()
реализаций для подтверждения того, что тип (или тип член) имеет заданный атрибут, примененный к нему. Эти вызовы выглядят так:
typeof(X).Should()
.BeDecoratedWith<SomeAttribute>(attr => attr.Name == expectedValue);
Лямбда-выражение утверждает, что атрибут имеет Name
, равный некоторому expectedValue
.
Это замечательно, когда sut
является типом, но когда это член, нет перегрузки BeDecoratedWith<T>
, которая принимает лямбда-выражение.
// compiler error: Cannot convert lambda expression to type 'string' because it is not a delegate type
typeof(X).GetProperty("xyz").Should()
.BeDecoratedWith<SomeAttribute>(attr => attr.Name == expectedValue);
Документация быстро охватывает расширяемость, но мне трудно понять, как d создать перегрузку (или метод расширения) BeDecoratedWith<T>
в PropertyInfoAssertions
, который принимает лямбду, подобную приведенной выше.
Может ли кто-нибудь показать мне, как правильно расширить Fluent Assertions для достижения этой цели?
ProprtyInfoAssertions
, но тогда мне пришлось бы самому переписывать весь код обработки атрибутов, что кажется неправильным. - person nikmd23   schedule 09.09.2013