gpt4 book ai didi

vb.net - 通过反射和循环列表项确定属性是否是泛型 List

转载 作者:行者123 更新时间:2023-12-02 01:39:38 26 4
gpt4 key购买 nike

我通过反射循环对象中的所有属性:

For Each p As PropertyInfo In values.[GetType]().GetProperties()
If p.CanRead Then
'Do stuff
End If
Next

谁能告诉我如何确定有问题的属性是否是通用 List(Of T)?如果是,我需要循环列表本身。

我已经尝试过 GetType 和 TypeOf 但没有成功。

谢谢。

****更新和澄清**

澄清一下,我想保持这个通用性。我不想指定 T 的类型,我需要循环列表项并在每个项上调用 ToString 方法。 T 可以是多种不同类型之一(特定于应用程序的引用类型)。是否可以在不指定类型的情况下执行此操作?

(VB.NET 2005 和 .Net 2.0)

最佳答案

尝试这个完整的控制台应用程序。抱歉,这是 C# 语言。

using System;
using System.Reflection;
using System.Collections.Generic;
using System.Collections;

namespace ReflectionTest
{
public class Object1
{
public override string ToString()
{
return "This is Object 1";
}
}
public class Object2
{
public override string ToString()
{
return "This is Object 2";
}
}

public class ContainerClass
{
public List<object> objects { get; set; }
public int propA { get; set; }
public string propB { get; set; }
public string[] propC { get; set; }
}
class Program
{
static void Main(string[] args)
{
// Sample class instance
ContainerClass c = new ContainerClass();

// Add some sample data
c.objects = new List<object>();
c.objects.Add(new Object1());
c.objects.Add(new Object2());

PropertyInfo[] props = c.GetType().GetProperties();

foreach (PropertyInfo p in props)
{
if (typeof(IList).IsAssignableFrom(p.PropertyType)
&& p.PropertyType.IsGenericType)
{
IList item = (IList)p.GetValue(c, null);
if (item != null)
{
foreach (object o in item)
{
Console.WriteLine(o.ToString());
}
}
}
}
Console.ReadLine();
}


}
}

关于vb.net - 通过反射和循环列表项确定属性是否是泛型 List<of T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1503976/

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