如何给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; }
}
我正在将 属性 添加到 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; }
}