[英]PostSharp MulticastAttributeUsage MulticastTargets.Constructor option is deprecated
[英]PostSharp MulticastAttributeUsage not working
我在使用 PostSharp 和 Entity Framework 时遇到了麻烦,因为 PostSharp 为私有字段生成“backingField”属性,并且它的 EDM 模型创建失败。 我尝试使用MulticastAttributeUsageAttribute.AttributeTargets
将其限制为此处所述的属性。 但是这段代码:
[NotifyPropertyChanged(), MulticastAttributeUsage(MulticastTargets.Property)]
public abstract class MetrologijaEntityBase
{
public Guid Id { get; set; }
public string ExternalKey { get; set; }
}
和这段代码
[NotifyPropertyChanged()]
[MulticastAttributeUsage(MulticastTargets.Property)]
public abstract class MetrologijaEntityBase
{
public Guid Id { get; set; }
public string ExternalKey { get; set; }
}
给出与没有MulticastAttributeUsage
属性的代码相同的结果 - 仍然生成私有字段的“backingField”属性(带有所有 getter 和 setter) (因为它在我的类的 IL Disassambler 中可见) 。 MetrologijaEntityBase
是 EF 业务模型实体层次结构的基类。 在这种情况下我做错了什么?
[MulticastAttributeUsage]
更改了它所应用的MulticastAttribute
的默认行为,并且在应用于不是从MulticastAttribute
继承的类时没有任何影响。 它可用于更改您自己方面的默认行为。 它不会更改应用于同一声明的方面的行为(您通常可以通过更改方面本身的属性来做到这一点)。
[NotifyPropertyChanged]
是一个类型级别的方面,它适用于整个类型。 除非方面本身支持(目前 NPC 方面不支持),否则通常无法控制它对单个属性的作用。
作为一个解决方案,我建议忽略编程创建EF模型时提到基于他们的名字添加的属性在这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.