C# 反射 - 类型的 GetCustomAttributes 从 parent class 获取属性
C# Reflection - GetCustomAttributes for Type gets attribute from parent class
假设我有两个 class,基础 class 有一个自定义属性:
[MyAttribute]
public class BaseModel
{
public string Id { get; set; }
public string Name { get; set; }
}
public class InheritedModel : BaseModel
{
public string CompanyName { get; set; }
public int Amount { get; set; }
}
当我使用继承的 class 时,例如
// member.DeclaringType is InheritedModel
if (member.DeclaringType.GetCustomAttributes(typeof(MyAttribute)).Any())
{
// returns true
}
我希望这应该是 false
因为 InheritedModel
没有直接 MyAttribute
属性。
它是正确的行为吗? parents 和上述条件的继承人如何划分?
GetCustromAttributes 有一个重载,可让您指定是否还要搜索祖先 类。
它似乎默认为 true
(虽然它在文档中没有说明)所以尝试传递 false
member.DeclaringType.GetCustomAttributes(typeof(MyAttribute), false).Any()
假设我有两个 class,基础 class 有一个自定义属性:
[MyAttribute]
public class BaseModel
{
public string Id { get; set; }
public string Name { get; set; }
}
public class InheritedModel : BaseModel
{
public string CompanyName { get; set; }
public int Amount { get; set; }
}
当我使用继承的 class 时,例如
// member.DeclaringType is InheritedModel
if (member.DeclaringType.GetCustomAttributes(typeof(MyAttribute)).Any())
{
// returns true
}
我希望这应该是 false
因为 InheritedModel
没有直接 MyAttribute
属性。
它是正确的行为吗? parents 和上述条件的继承人如何划分?
GetCustromAttributes 有一个重载,可让您指定是否还要搜索祖先 类。
它似乎默认为 true
(虽然它在文档中没有说明)所以尝试传递 false
member.DeclaringType.GetCustomAttributes(typeof(MyAttribute), false).Any()