【问题标题】:Where do I put the [XmlAttribute] attribute in c#?我在哪里把 [XmlAttribute] 属性放在 c# 中?
【发布时间】:2012-10-22 05:43:41
【问题描述】:

我通过提供相应的公共属性将一些公共字段更改为私有。

例如:

public string Name;

改成

private string _name;
public string Name
{
    get{ return _name;}
    set{ _name = value;}
}

但是,原始公共字段上的 [XmlAttribute] 属性呢? 即做

[XmlAttribute]
public string Name;

变成:

[XmlAttribute]
private string _name;
public string Name
{
    get{ return _name;}
    set{ _name = value;}
}

private string _name;
[XmlAttribute]
public string Name
{
    get{ return _name;}
    set{ _name = value;}
}

【问题讨论】:

    标签: c# attributes xml-attribute


    【解决方案1】:

    第二个解决方案。

    顺便说一句,如果您在 getter 或 setter 中没有做任何特别的事情,您不再需要(.net 3.0 和 +)私有字段。

    您可以使用auto-implemented properties

    [XmlAttribute]
    public string Name {get;set;}
    

    【讨论】:

    • 谢谢拉斐尔,我这样做的原因是声纳(代码质量控制)检测到公共字符串名称;使用以下规则:link
    • @IC_Weekend 好吧...因为该属性是公共的,而该字段是私有的。并且默认序列化不能在私有字段上工作。见stackoverflow.com/questions/802711/…
    • @IC_Weekend 是的,使用公共字段不是一个好主意,但是您的声纳将接受自动实现的属性(如果不接受,请更改它;))
    【解决方案2】:

    而不是做

    private string _name;
    public string Name
    {
    get{ return _name;}
    set{ _name = value;}
    }
    

    为什么不这样做

    public string Name { get; set; }
    

    我认为这是在 C# 3.0 中引入的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 2013-09-21
      • 2020-09-30
      • 2011-12-13
      • 2016-08-25
      • 2013-08-15
      • 1970-01-01
      相关资源
      最近更新 更多