目录
写代码总会碰到各种各样的特性,经常会忘了是什么,干脆就做个记录吧。
当问到特性是什么的时候,有个解释是这样的。
特性它什么都不干,只是给类(或者方法,属性等)贴一个小标签。这个标签可以用反射API检索到。如果你不去检索,和没有这个特性没有任何区别。
当然了,当你使用一种现成的框架库,比如EF,或者MVC,框架本身会去检索这些特性,并且做出某种行为,只是你没看到,因为它本来就存在一样。这好比,在有供电的房间中,你将电器的电源线插入插座,就能工作。你不明白之所以插座里面有电,是因为里面有电线,最终和发电厂相连。你在没有电的农村,光是在墙上装一个插座,你说能让电器工作么?
JsonProperty Attribute
1.用来指定序列化时的名称
public class Man
{
[JsonProperty("Chinese name")]
public string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
Man m = new Man
{
Name = "秀儿"
};
string json = JsonConvert.SerializeObject(m, Formatting.Indented);
Console.WriteLine(json);
}
而运行结果是
[{
"Chinese name": "秀儿"
}]
说白了就是用来改变json格式中的名称/值中的名称,此外还可以使用JsonPropertyAttribute序列化升序排序属性,格式如
[JsonProperty(Order=3)]
public string Name { get; set; }
[JsonProperty(Order=1)]
public string Age{ get; set; }
public int ReleaseYear { get; set; }
[JsonProperty(Order=-2)]
public string Weight{ get; set; }
出来的json也会按顺序排列
[Required]
这个特性是告诉别人这个字段是必须的
/// <summary>
/// ID
/// </summary>
[Required]
public long Id { get; set; }
[MaxLength(100)]
/// <summary>
/// 文件URL
/// </summary>
[MaxLength(100)]
public string fileUrl { get; set; }
MaxLength特性就跟翻译过来的意思一样,限制字段长度的,这里是100.