gpt4 book ai didi

c# - 在 C# 中将 foreach 用于属性

转载 作者:行者123 更新时间:2023-11-30 15:37:39 25 4
gpt4 key购买 nike

我这样定义一个属性:

public IMAGE_DOS_HEADER  ImageDosHeader 
{

get
{
return imageDosHeader;
}
}

其中 IMAGE_DOS_HEADER 是这样的结构

public struct IMAGE_DOS_HEADER
{ // DOS .EXE header
public UInt16 e_magic; // Magic number
public UInt16 e_cblp; // Bytes on last page of file
public UInt16 e_cp; // Pages in file
public UInt16 e_crlc; // Relocations
public UInt16 e_cparhdr; // Size of header in paragraphs
public UInt16 e_minalloc; // Minimum extra paragraphs needed
}

最后我想在主程序中使用这个属性,像这样使用 foreach

foreach (var DosHeader in reader.ImageDosHeader)
{
listView2.Items[i].SubItems.Add(DosHeader.ToString("X"));
i++;
}

但是出现编译错误:“错误 1 ​​foreach 语句无法对类型为‘PEfileReader.PeHeaderReader.IMAGE_DOS_HEADER’的变量进行操作,因为‘PEfileReader.PeHeaderReader.IMAGE_DOS_HEADER’不包含‘GetEnumerator’的公共(public)定义”

谁能帮帮我?

最佳答案

要获取结构的字段,您应该使用反射

IMAGE_DOS_HEADER header = new IMAGE_DOS_HEADER() { e_cblp = 1, e_cp = 2, e_cparhdr = 3, e_crlc = 4, e_magic = 5, e_minalloc = 6 };

var fieldsAndValues =
typeof(IMAGE_DOS_HEADER)
.GetFields()
.Select(f=>new {
Name= f.Name, //<== Name of the field
Value = f.GetValue(header) //<==Value of the field
})
.ToList();

然后您可以将值插入 ListView

foreach (var item in fieldsAndValues)
{
listView2.Items[i].SubItems.Add(item.Value);
}

关于c# - 在 C# 中将 foreach 用于属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12329387/

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