我想使用自定义属性自定义值,因此当我调用ToString()
时,我的属性属性将用于格式化。
调用int.ToString()
时,DisplayFormat
attrbiute(如果已定义)用于格式化。
但这是如何运作的?它在哪里工作?
如果我创建一个类如下
public class WeatherSingle
{
private Single value;
public override string ToString()
{
return "-> " + value.toString();
}
}
然后在类的实例上使用属性我的ToString()
方法如何才能访问属性属性?该属性未在我的类中定义,而是在另一个类中定义该类的实例。
所以说我创建了一个WeatherAttribute
来获取描述和其他一些属性,并在另一个类中使用它,如下所示
public class MyRecord
{
[WeatherAttribute(description = "The current temperature in Celsius", format = "0.0", suffix = "Degree")]
public WeatherSingle Temperature { get; set; }
}
如果我调用MyRecord.Temperature.ToString()
,它将触发我重写的ToString()
方法,但该方法不知道我在MyRecord
类中添加属性的属性。
从MyRecord
类我可以看到我的属性,但这需要我为该类和我使用该属性的任何类编码。
那么DisplayFormatAttribute
如何适用于任何类中的任何属性?
如何编写自己的属性格式化程序,其行为类似于DisplayFormatAttriute
?