自定义树形定义
public class AuthorAttribute : Attribute
{
public AuthorAttribute(String Description_in)
{
//
// TODO: Add constructor logic here
this.description = Description_in;
//
}
protected String description;
public String Description
{
get
{
return this.description;
}
}
}
Book类定义,使用属性
public class Book
{
[Author("AuthorName")]
public string Name
{
get; private set;
}
}
vs2019完整代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;
using System.Reflection;
using System.Diagnostics;
namespace ConsoleApp1
{
//our custom attribute class
public class AuthorAttribute : Attribute
{
public AuthorAttribute(String Description_in)
{
//
// TODO: Add constructor logic here
this.description = Description_in;
//
}
protected String description;
public String Description
{
get
{
return this.description;
}
}
}
public class Book
{
[Author("AuthorName")]
public string Name
{
get; private set;
}
}
class Hello
{
public static Dictionary<string, string> GetAuthors()
{
Dictionary<string, string> _dict = new Dictionary<string, string>();
PropertyInfo[] props = typeof(Book).GetProperties();
foreach (PropertyInfo prop in props)
{
object[] attrs = prop.GetCustomAttributes(true);
foreach (object attr in attrs)
{
AuthorAttribute authAttr = attr as AuthorAttribute;
if (authAttr != null)
{
string propName = prop.Name;
string auth = authAttr.Description;
_dict.Add(propName, auth);
}
}
}
return _dict;
}
static void Main(string[] args)
{
GetAuthors();
Console.WriteLine("Hello World!");
}
}
}
参考链接:
https://stackoverflow.com/questions/6637679/reflection-get-attribute-name-and-value-on-property