|
|

- //你感受一下
- class Program
- {
- static void Main(String[] args)
- {
- var t = typeof(A);
- var pName = t.GetProperty("Name");
- //4.0或以上版本
- var displayName = pName.GetCustomAttribute<DisplayNameAttribute>();
- Console.WriteLine(displayName.DisplayName);
- Console.ReadKey();
- }
- }
- public class A
- {
- [DisplayName("张三")]
- public String Name { get; set; }
- }
复制代码
受上面的代码启发,为什么,我要获取displayname呢?
我重写了一个tostring方法。
原来这样写的:
- /// <summary>
- /// 重写tostring
- /// </summary>
- /// <returns></returns>
- public override string ToString()
- {
- return string.Format("id:{0},标题:{1},链接:{2},详情:{3},作者:{4},num:{5}", _id.ToString(), title, url, descrip{过滤}tion, by, num);
- }
复制代码
这样是写死的,太麻烦了,如果,我类那么多,我每个都这样写,那不气死了。
最后,这样写,哈哈。
- [Serializable]
- public class Test : Mongo.EntityBase
- {
- [DisplayName("标题")]
- public string title { get; set; }
- [DisplayName("链接")]
- public string url { get; set; }
- public string descrip{过滤}tion { get; set; }
- public string by { get; set; }
- public object num { get; set; }
- /// <summary>
- /// 重写tostring
- /// </summary>
- /// <returns></returns>
- public override string ToString()
- {
- return GetDisplayName<Test>(this);
- }
- /// <summary>
- /// 反射获取DisplayName
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="t"></param>
- /// <returns></returns>
- private static string GetDisplayName<T>(T t) where T : class
- {
- List<String> list = new List<string>();
- Type type = typeof(T);
- PropertyInfo[] ps = type.GetProperties();
- foreach (PropertyInfo info in ps)
- {
- var name = info.GetCustomAttribute<DisplayNameAttribute>();
- list.Add((name == null ? info.Name : name.DisplayName) + ":" + (info.GetValue(t, null) == null ? string.Empty : info.GetValue(t, null).ToString()));
- }
- return string.Join(",", list);
- }
- }
复制代码
|
上一篇:.net/c# 实现mongodb查询和模糊查询4种方式[附源码]下一篇:MongoDB权限角色表
|