有没有办法从 FluentAssertions 中的 .BeEquivalentTo(..) 中排除标有 [Obsolete] 属性的属性?

问题描述

我通过使用 FluentAssertions 中的 .Should().BeEquivalentTo(..) 来检查实例的自定义克隆的等效性。 现在有一些属性标记为过时并且不再被克隆。有没有办法排除这些属性

我试图获取属性属性但失败了。

.Excluding(b => b.SelectedMemberInfo.MemberType.GetCustomAttributesData()
                  .Any(ca => ca.AttributeType == typeof(ObsoleteAttribute)))

解决方法

问题在于 MemberType 为您提供字段或属性公开的对象类型,而不是属性或字段本身(.NET MemberInfoPropertyInfo 或 { {1}})。您可以使用这样一个相当丑陋的结构来解决这个问题:

FieldInfo