如何给aspect/compiler-generated属性添加属性?

How to add attributes to aspect/compiler-generated property?

我正在将 属性 添加到 class 并且我的方面设置如下:

[PSerializable]
public class MyAspect : InstanceLevelAspect
{
    [MaxLength(100)]
    [IntroduceMember]
    public string MyProp { get; set; }
}

我的目标 class 然后用 [MyAspect] 属性修饰。

当 Postsharp 将 MyProp 属性 添加到目标 class 时,它不会在生成的 属性 上包含 MaxLength 属性。 Aspect class 中的 属性 包含它,但添加到我的目标 class 的 属性 不包含它。

我需要在方面定义中为 属性 指定的属性添加到 属性 添加到我的目标 class。如何将属性添加到生成的 属性?

要指示 PostSharp 复制属性,您需要使用 [CopyCustomAttributes] (doc),因此您的纵横比将如下所示:

[PSerializable]
public class MyAspect : InstanceLevelAspect
{
    [MaxLength(100)]
    [IntroduceMember]
    [CopyCustomAttributes(typeof(MaxLengthAttribute))]
    public string MyProp { get; set; }
}