如何在类中两次使用“覆盖字符串 ToS​​tring()”方法

GAN*_*ANI 5 .net c# boolean tostring

我已将这种方法用于我的类中定义的两个属性。属性是

public bool HasImage { get; set; }
public DateTimeOffset? StartDate { get; set; }


public override string ToString()
{
    string value = "";
    if (StartDate.HasValue)
    {
        if (StartDate == DateTime.Today.Date)
            value = "1 Day";
        else if (StartDate < DateTime.Today.Date)
            value = "Past Due";
    }
    return value;
}
Run Code Online (Sandbox Code Playgroud)

如何对HasImage属性使用这个方法,这里我无法删除StartDate属性的方法。将结果导出到excel时会调用以上方法。

Bri*_*sen 5

的目的ToString是创建对象本身的字符串表示形式。即你没有ToString为每个属性获得一个方法。您可以获得该对象的一种方法。

如果您想将单个属性转换为字符串,您需要自己提供这些方法并根据需要显式调用它们。例如类似StartDateAsString和 的东西HasImageAsString


flo*_*ele 3

解决这个问题的一种优雅/常见的方法是实现IFormattable接口(查看完整示例的链接),如下所示:

public class MyClass : IFormattable
{
    public string ToString(string format, IFormatProvider formatProvider)
    {
        switch (format)
        {
            case "X": return x.ToString();
            case "Y": return y.ToString();
            // ...
        }

        return this.ToString();        
    }
}
Run Code Online (Sandbox Code Playgroud)