c# - 如何在类中的属性中获取属性的自定义属性
问题描述
我的任务是设置/初始化类中所有标记有自定义属性的属性,这些属性派生到该类的属性中的类和属性。例子:
class Program
{
static void Main(string[] args)
{
A a = new A();
a.InjectableProperties();
}
}
public class A : C
{
[CodeModuleProperty(ModulePropertyType.Injectable)]
public string NameA{ get; set; }
public B ObjB { get; set; }
public IEnumerable<PropertyInfo> InjectableProperties()
{
var response = new List<PropertyInfo>();
// get the mnodule properties
var moduleProperties = GetType().GetProperties();
foreach (var moduleProperty in moduleProperties)
{
var attribute = moduleProperty.GetCustomAttributes(typeof(CodeModulePropertyAttribute), false)
.FirstOrDefault();
if (attribute != null && ((CodeModulePropertyAttribute)attribute).PropertyType ==
ModulePropertyType.Injectable)
{
response.Add(moduleProperty);
}
}
return response // Only gives A,D &C . I also want custom attributes children properties within objB;
}
}
在这种方法中,我还想获取属性“ClassB”的自定义属性属性以及 A、D 和 E 类的属性。如何实现?
public class B
{
[CodeModuleProperty(ModulePropertyType.Injectable)]
public string NameB { get; set; }
}
public class C : D
{
[CodeModuleProperty(ModulePropertyType.Injectable)]
public string NameC { get; set; }
}
public class D
{
[CodeModuleProperty(ModulePropertyType.Injectable)]
public string NameD { get; set; }
}
[AttributeUsage(AttributeTargets.Property)]
public class CodeModulePropertyAttribute : Attribute
{
public CodeModulePropertyAttribute(ModulePropertyType propertyType)
{
PropertyType = propertyType;
}
public ModulePropertyType PropertyType { get; set; }
}
public enum ModulePropertyType
{
Injectable = 1,
DynamicConfiguration = 2
}
解决方案
对于财产
object attr = typeof(MyClass)
.GetProperty("NameB")
.GetCustomAttributes(typeof(CodeModuleProperty), false)
.FirstOrDefault();
上课
object attr = typeof(MyClass)
.GetCustomAttributes(typeof(CodeModuleProperty), false)
.FirstOrDefault();
如果您想检查所有属性,只需执行.GetProperties
并迭代它们for-each
并调用GetCustomAttributes
推荐阅读
- react-native - 从导航标题调用时反应原生动画不起作用
- flutter - 此函数的返回类型为 'Future
'.尝试添加return语句 - javascript - 更改选项时未检测到 JS,变量保持未定义
- python - 我如何检查一组字符串中的所有字符是否每个索引都是唯一的?
- python - 获取数组中的复选框状态 - Tkinter
- python - 无论如何在pygame中递归地做到这一点?
- angular - 直接在类上访问主题或使用getter有什么区别
- sorting - 如何使用 JMESPath 对来自 AWS CLI 的 JSON 输出进行排序
- python - 从分类中提取 value_counts() 之后的索引作为数组
- c# - 实体框架中的异步查询