【发布时间】:2014-02-05 02:43:03
【问题描述】:
当然我错过了明显的东西。我正在构建一个内部应用程序,我正在反思我们的一些内部 dll 并在树视图中显示它们
Treeview 是按需加载的,对于每个属性,在展开时我会获取子项(如果有)。 当孩子是日期时间,字符串,十进制等时。然后我再次展开 我不应该得到字符串或日期时间等的所有内部属性。它不应该返回任何东西。我尝试了几个 bindingFlags 但我们没有成功。
我正在使用下面的方法,但是还不够好。
public static PropertyInfo[] GetPropertiesByType(this Type t)
{
if (!t.IsPrimitive
|| t != typeof (System.Decimal)
|| t != typeof (System.String)
|| t != typeof(System.DateTime)
|| t != typeof (System.DateTime?))
{
return t.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.OrderBy(p => p.Name).ToArray();
}
return new PropertyInfo[0];
}
我想要的是在获取属性时应该排除所有不相关的内部属性。
EG 客户有订单,订单有 OrderedDate。使用树视图时,我点击客户和 我在订单上点击订单,在点击订单日期时我得到 OrderDate 我应该没有任何属性。我得到“HasValue and value”并展开值并获取所有日期时间的东西。
当属性是字符串时,我不应该看到字符和长度。
任何建议
【问题讨论】:
-
所以您实际上想要排除任何属于本机 CLR 类型的属性?字符串(String)、整数(Int32)等?
-
@Abhinav 是的,这是正确的
标签: c# system.reflection