gpt4 book ai didi

c# - 如何知道 PropertyInfo 是否是一个集合

转载 作者:IT王子 更新时间:2023-10-29 03:49:00 26 4
gpt4 key购买 nike

下面是我用来获取类中所有公共(public)属性的初始状态以进行 IsDirty 检查的一些代码。

查看属性是否为 IEnumerable 的最简单方法是什么?

干杯,
贝瑞尔

  protected virtual Dictionary<string, object> _GetPropertyValues()
{
return _getPublicPropertiesWithSetters()
.ToDictionary(pi => pi.Name, pi => pi.GetValue(this, null));
}

private IEnumerable<PropertyInfo> _getPublicPropertiesWithSetters()
{
return GetType().GetProperties().Where(pi => pi.CanWrite);
}

更新

我最后做的是添加一些库扩展,如下所示

    public static bool IsNonStringEnumerable(this PropertyInfo pi) {
return pi != null && pi.PropertyType.IsNonStringEnumerable();
}

public static bool IsNonStringEnumerable(this object instance) {
return instance != null && instance.GetType().IsNonStringEnumerable();
}

public static bool IsNonStringEnumerable(this Type type) {
if (type == null || type == typeof(string))
return false;
return typeof(IEnumerable).IsAssignableFrom(type);
}

最佳答案

if (typeof(IEnumerable).IsAssignableFrom(prop.PropertyType) && prop.PropertyType != typeof(string))

关于c# - 如何知道 PropertyInfo 是否是一个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3569811/

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