编辑:经过进一步思考,我决定这个警告很糟糕。CA2104 的整个想法是您可以获取指针并使用它来修改对象的内容。对附加属性使用“获取”操作并不能解决根本问题,它只会欺骗代码分析以接受该模式。处理这个问题的正确方法是忽略项目属性中的 CA2104,因为在一个拥有公共 DependencyProperty 类的世界中,这是一个愚蠢的警告。
此警告在 Metro 中似乎无效,因为 DependencyProperties 是不可变的。但是,它在 WPF 中似乎是有效的,因为如果您有对 DependencyProperty 的可写引用,您可以添加所有者或弄乱元数据。这是代码,它并不漂亮,但这通过了 FXCop 指南。
/// <summary>
/// Identifies the Format dependency property.
/// </summary>
private static readonly DependencyProperty labelPropertyField = DependencyProperty.Register(
"Label",
typeof(String),
typeof(MetadataLabel),
new PropertyMetadata(String.Empty));
/// <summary>
/// Gets the LabelProperty DependencyProperty.
/// </summary>
public static DependencyProperty LabelProperty
{
get
{
return MetadataLabel.labelPropertyField;
}
}
/// <summary>
/// Gets or sets the format field used to display the <see cref="Guid"/>.
/// </summary>
public String Label
{
get
{
return this.GetValue(MetadataLabel.labelPropertyField) as String;
}
set
{
this.SetValue(MetadataLabel.labelPropertyField, value);
}
}