繁体   English   中英

PostSharp MulticastAttributeUsage 不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM