gpt4 book ai didi

c# - 是否有可能知道属于某个类或其父类的属性

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:26 24 4
gpt4 key购买 nike

public class Parent
{
public virtual DateTime DateCreated
{
get;
set;
}
}

public class Child:Parent
{
......
}

Type type = typeof(Child);

//PropertyInfo DateTime = type.GetProperty("DateCreated");

有没有办法知道属性“DateCreated”是父属性而不是子属性。

最佳答案

您可以查看属性信息的DeclaringType值并查看它是否与 Child 类型匹配。如果不匹配,则您知道它已在父级上声明。

Type type = typeof(Child);
PropertyInfo dateTimeProperty = type.GetProperty("DateCreated");

bool declaredByParentClass = dateTimeProperty.DeclaringType != typeof(Child);

或者,您可以使用 overload of GetProperty检索 在类型 Child 上声明的属性:

Type type = typeof(Child);
PropertyInfo dateTimeProperty = type.GetProperty("DateCreated", BindingFlags.DeclaredOnly | BindingFlags.Public);

bool declaredByParentClass = dateTimeProperty == null;

如果您只是想检查它是否是从父类声明的,您可以使用第二种方法。但是,我怀疑即使该属性是在父级上声明的,您仍想对该属性执行某些操作,如果是这样,您将希望使用第一种方法来避免使用不同的绑定(bind)标志检索该属性两次。

关于c# - 是否有可能知道属于某个类或其父类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17950725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com