PostSharp MulticastAttributeUsage 不工作
PostSharp MulticastAttributeUsage not working
我在使用 PostSharp 和 Entity Framework 时遇到问题,因为 PostSharp 会为私有字段生成“backingField”属性,而 EDM 模型创建失败。我尝试使用 MulticastAttributeUsageAttribute.AttributeTargets
将其限制为属性 as described here。
但是这段代码:
[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)(as it visible in IL Disassambler for my class)。 MetrologijaEntityBase
是 EF 业务模型实体层次结构的基础 class。
在这种情况下我做错了什么?
[MulticastAttributeUsage]
更改了它所应用的 MulticastAttribute
的默认行为,并且在应用于未从 MulticastAttribute
继承的 类 时没有任何效果。它可用于更改您自己方面的默认行为。它不会更改应用于同一声明的方面的行为(您通常可以通过更改方面本身的属性来做到这一点)。
[NotifyPropertyChanged]
是一个 type-level 方面,它适用于整个类型。通常不可能控制它对单个属性的操作,除非方面本身支持(NPC 方面目前不支持)。
作为解决方案,我建议在创建 EF 模型时以编程方式忽略基于名称的添加属性 here。
我在使用 PostSharp 和 Entity Framework 时遇到问题,因为 PostSharp 会为私有字段生成“backingField”属性,而 EDM 模型创建失败。我尝试使用 MulticastAttributeUsageAttribute.AttributeTargets
将其限制为属性 as described here。
但是这段代码:
[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)(as it visible in IL Disassambler for my class)。 MetrologijaEntityBase
是 EF 业务模型实体层次结构的基础 class。
在这种情况下我做错了什么?
[MulticastAttributeUsage]
更改了它所应用的 MulticastAttribute
的默认行为,并且在应用于未从 MulticastAttribute
继承的 类 时没有任何效果。它可用于更改您自己方面的默认行为。它不会更改应用于同一声明的方面的行为(您通常可以通过更改方面本身的属性来做到这一点)。
[NotifyPropertyChanged]
是一个 type-level 方面,它适用于整个类型。通常不可能控制它对单个属性的操作,除非方面本身支持(NPC 方面目前不支持)。
作为解决方案,我建议在创建 EF 模型时以编程方式忽略基于名称的添加属性 here。