相关疑难解决方法(0)

改善绩效反思 - 我应该考虑哪些替代方案?

我需要动态设置对象上的值或属性的值,称之为传输对象.

将会创建相当数量的这些传输对象,并在短时间内设置其属性.我想避免使用反射.

还有替代品吗?如果是这样的样本实现我可以看一下?

.net c# reflection performance

19
推荐指数
3
解决办法
2万
查看次数

C#命令获取struct offset?

假设我有一个像这样的C#结构:

[StructLayout(LayoutKind.Explicit)]
struct IMAGE_DOS_HEADER {
    [FieldOffset(60)] public int e_lfanew;
}
Run Code Online (Sandbox Code Playgroud)

现在假设我从文件中读取数据,如下所示:

byte[] data = new byte[4096];
FileStream f = new FileInfo(filename).Open(FileMode.Open, FileAccess.Read);
int n = f.Read(data, 0, 4096);
Run Code Online (Sandbox Code Playgroud)

现在我想测试n以确保我已经读取了足够的字节来获取值e_lfanew.有没有什么办法可以获得值60(FieldOffset)而无需重新输入?我正在寻找这样的东西:

if (n >= offsetof(IMAGE_DOS_HEADER.e_lfanew) + sizeof(int)) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

有这样的命令吗?在我的实际代码中,我必须进行其中几个测试,并且通过在结构中添加先前字段或通过从FieldOffset属性中复制值来手动输入数字似乎很乏味且容易出错.有没有更好的办法?

c#

8
推荐指数
3
解决办法
8566
查看次数

标签 统计

c# ×2

.net ×1

performance ×1

reflection ×1