类内的反射循环属性

发布于 2025-01-15 19:41:27 字数 949 浏览 1 评论 0原文

我找不到解决我的问题的方法,所以我尝试在这里提问。我有一个类,我想在类中有一个方法来测试属性的状态。如果任何属性分配了多个值,则该方法应返回 true。但我找不到任何关于如何通过反射循环遍历类本身的所有属性并测试 Count 是否 > 的示例。大于 0。

或者我应该使用反射以外的其他技术?

我只是想避免在测试方法中再次对属性进行硬编码。

using System.Reflection;

public class cP
{
    public Guid gid { get; set; } = Guid.NewGuid();
    public List<string> p1 { get; set; } = new List<string>();
    public List<string> p2 { get; set; } = new List<string>();

    public bool HasDefinedValues()
    {
        List<PropertyInfo> properties = this.GetType().GetProperties().ToList();

        foreach (PropertyInfo property in properties)
        {
            if (property.PropertyType == typeof(List<int>))
            {
                string PName = property.Name;
                if (((List<int>)property.GetValue(property.Name, null)).Count > 0) { return true; };
            }
        }

        return false;
    }
}

I can't find a solution to my problem, so I try ask here. I have a class and I want to have a method in the class to test for the state of the Properties. The method should return true if any of the properties has more one or more values assigned. But i cannot find any examples of how to loop trough all the properties of the class itself with reflection and test if Count is > than 0.

Or should I use another technique than reflection?

I just want to avoid hard coding the Properties one more time in the Test method.

using System.Reflection;

public class cP
{
    public Guid gid { get; set; } = Guid.NewGuid();
    public List<string> p1 { get; set; } = new List<string>();
    public List<string> p2 { get; set; } = new List<string>();

    public bool HasDefinedValues()
    {
        List<PropertyInfo> properties = this.GetType().GetProperties().ToList();

        foreach (PropertyInfo property in properties)
        {
            if (property.PropertyType == typeof(List<int>))
            {
                string PName = property.Name;
                if (((List<int>)property.GetValue(property.Name, null)).Count > 0) { return true; };
            }
        }

        return false;
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

相权↑美人 2025-01-22 19:41:27

现在正在工作

This is working now ????

using System.Reflection;

public class cP
{
    public Guid gid { get; set; } = Guid.NewGuid();
    public List<string> p1 { get; set; } = new List<string>();
    public List<string> p2 { get; set; } = new List<string>();

    public bool HasDefinedValues()
    {
        List<PropertyInfo> properties = this.GetType().GetProperties().ToList();

        foreach (PropertyInfo property in properties)
        {
            if (property.PropertyType == typeof(List<string>))
            {
                if (((List<string>)property.GetValue(this, null)).Count > 0) { return true; };
            }
        }

        return false;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文