对于我的类中定义的两个属性,我已经使用了这个方法。属性是
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;
}
如何将此方法用于HasImage属性,这里我无法删除StartDate属性的方法。将结果导出为excel时会调用上述方法。
答案 0 :(得分:4)
ToString
的目的是创建对象本身的字符串表示。即每个属性都没有ToString
方法。你得到一个对象的方法。
如果要将单个属性转换为字符串,则需要自己提供这些方法并根据需要显式调用它们。例如。类似于StartDateAsString
和HasImageAsString
。
答案 1 :(得分:2)
然后不要使用默认的ToString方法,制作自己的方法(或者只是具有与下面相同的getter的属性)。 ToString
方法应该表示该对象,而不一定是其属性。
public string GetHasImage(){ return HasImage ? "Yes" : "No"; }
public string GetDateTimeOffset
{
return
!StartDate.HasValue ? string.Empty :
StartDate == DateTime.Today.Date ? 1 Day" :
StartDate < DateTime.Today.Date ? "Past Due" :
string.Empty;
}
答案 2 :(得分:2)
解决此问题的优雅/常用方法是实现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();
}
}