chu*_*tar 2 c# reflection collections attributes properties
是否可以将属性及其相关属性作为集合或属性集获取?
我正在查看的对象的属性具有在 JSON.NET 中使用的属性,我想找出它们都是什么。之后,我将尝试找出其中哪些不为空。
这是一个示例对象:
[JsonObject]
public class Conditions
{
[JsonProperty("opened_since")]
public DateTime? OpenedSince { get; set; }
[JsonProperty("added_until")]
public DateTime? AddedUntil { get; set; }
[JsonProperty("opened_until")]
public DateTime? OpenedUntil { get; set; }
[JsonProperty("archived_until")]
public DateTime? ArchivedUntil { get; set;
}
Run Code Online (Sandbox Code Playgroud)
这将为您提供所有属性、它们的属性以及这些属性的参数值(请注意,此解决方案假定您使用的是 .net 框架版本 4.5):
PropertyInfo[] props = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo prop in props)
{
Console.WriteLine("Property: " + prop.Name);
foreach (CustomAttributeData att in prop.CustomAttributes)
{
Console.WriteLine("\tAttribute: " + att.AttributeType.Name);
foreach (CustomAttributeTypedArgument arg in att.ConstructorArguments)
{
Console.WriteLine("\t\t" + arg.ArgumentType.Name + ": " + arg.Value);
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Property: OpenedSince
Attribute: JsonPropertyAttribute
String: opened_since
Property: AddedUntil
Attribute: JsonPropertyAttribute
String: added_until
Property: OpenedUntil
Attribute: JsonPropertyAttribute
String: opened_until
Property: ArchivedUntil
Attribute: JsonPropertyAttribute
String: archived_until
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4458 次 |
| 最近记录: |