C# 设置属性时设置其他属性

C# 设置属性时设置其他属性,c#,properties,C#,Properties,我有一个具有许多属性的类 在本文中,有两个与此相关的属性 public string FileName { get; set; } public string Path { get; set; } FileName属性是使用XmlReader设置的,但我不想将路径存储在xml文件中 我要做的是设置FileName属性的值,还设置Path属性。我有两个问题: 像这样设置属性的做法行吗 在从XmlReader进行映射时,有没有更好的方法来实现这一点 试试这样的 private string pat

我有一个具有许多属性的类

在本文中,有两个与此相关的属性

public string FileName { get; set; }
public string Path { get; set; }
FileName属性是使用XmlReader设置的,但我不想将路径存储在xml文件中

我要做的是设置FileName属性的值,还设置Path属性。我有两个问题:

  • 像这样设置属性的做法行吗
  • 在从XmlReader进行映射时,有没有更好的方法来实现这一点

  • 试试这样的

    private string path;
    
    public string FileName { get; set; }
    public string Path 
    {
        get 
        { 
            return path; }
        set 
        { 
            path = value;
            FileName = Path.GetFileName(value);
        } 
    }
    

    如果一个属性可以从另一个属性计算,通常的方法就是这样做:在访问它时计算它。比如:

    public string Path { get; set; }
    
    public string FileName
    {
        get { return System.IO.Path.GetFileName(this.Path); }
    }
    

    如果文件名包含完整路径,为什么不在文件名的setter中设置路径?或者将路径更改为返回文件名路径的get only属性?您的问题不清楚,可能是主观的。提供更多的代码,并解释您认为是什么问题。反过来说,我只想存储文件名,但即使如此,您还是遵循了我采用的相同原则。只是不知道这算不算好。