Skip to main content
 首页 » 编程设计

C# 从集合类访问对象的属性

2024年01月29日34tintown

我正在从 VB 转向 C#。我试图遍历一个集合类,它是数据类的集合,但我似乎无法从数据类属性中获取实际值(找到正确的代码来这样做)。我有一个循环遍历集合类(联系人)并保存每条记录(联系人)的方法。我正在使用反射,因为我的方法不知道它是 Contacts 类还是 Customer 类等等。这是我在 VB 中的代码(淡化)

Public Function SaveCollection(ByVal objCollection as Object, ByVal TableName as string, ByVal spSave as string) 
 
 Dim objClass as Object 
 Dim propInfo as PropertyInfo 
 
For Each objClass in objCollection 
 
    propInfo = objClass.GetType.GetProperty("TableFieldName") 
 
 
Next 
 
End Function 

我在 C# 中遇到 objClass.GetType.GetProperty("TableFieldName") 行的问题

这是我的C#代码

public in SaveCollection(DictionaryBase objCollection, string TableName, string spSave) 
{ 
    PropertyInfo propInfo; 
 
   foreach (DictionaryEntry objClass in objCollection) 
      { 
       propInfo = objClass.GetType().GetProperty("TableFieldName") 
 
       } 
 
} 

C# 代码不断返回 null。在我的本地窗口中,我可以看到 objClass 类的属性和属性的值,但我似乎可以弄清楚如何通过代码访问它。我使用了 DictionaryBase,因为它似乎非常符合我需要做的事情。我的数据类(联系人)有一堆或属性与联系人表数据库中的字段名称匹配。获得 propInfo 变量集后,我用字段名、数据类型等设置我的 SQLParameter,然后将值设置为 propInfo.value。

感谢您的帮助。

请您参考如下方法:

看起来您正在将不同的集合传递给 VB 代码和 C# 代码。我的猜测是,在 VB 代码中,您传递的是字典的值,而在 C# 中,您传递的是字典本身。尝试将 C# 行更改为以下内容

propInfo = objClass.Value.GetType().GetProperty("TableFieldName");